Fred's firmware development diary

Official FreeEMS vanilla firmware development, the heart and soul of the system!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

Fixed another small bug this morning and implemented a table validation routine to check incoming tables and validate after changing an axis value (with a view to putting back the original if it fails).

More to come tonight.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

0.0.17 SpudEchoes is out :

https://sourceforge.net/project/showfil ... _id=639614

Echoes :
1) Pink Floyd song
2) Request/Response comms
Spud :
1) Because it's half baked...
2) http://www.halfbakedsoftware.com/
3) :-(

Changes :

Code: Select all

0.0.17 (SpudEchoes) 12:17 am 10/11/08 - UK time
Fred  8/10  7:40am: Moved flash routine from old text1 to text
                    Added descriptive comment to the main table definition
                    Added sizeof defines to the structs file
                    Shrunk and renamed text1 to lookup with 3 2k tables in it
Fred 15/10 10:50am: Removed all old busy wait ascii serial code
					Added packetising escaping checksumming receive ISR code
					Added packetising escaping checksumming send ISR code
					Added code to send back whatever it receives for testing purposes
					Temporarily changed make file to avoid a couple of options an old version of gcc didn't have
					Added document describing serial implementation
Fred 20/10 10:56am:	Added serial specification docs to the project docs dir and renamed them
					Added test packet directory
					Made some fixes to the ISR handling code for serial
					Added some more serial counters and masks
Fred 20/10  8:11pm:	Added core comms source and header files
					Removed commented out legacy code in places
					Updated tasks, bugs, tests, mindmap
Fred 21/10  8:00am:	Refactored escape code in rx section
					Added test packet for escape code generation EMS side
Fred 21/10  9:50pm:	Updated serial impl document
					Reordered receive statements for better speed and accuracy
					Generated individual bytes for sending
Fred 22/10  6:55pm:	Made the serial packet handler compile
					Commented out the copy-only sections in makefile
					Moved things out of commsISRs.h and added more things to commsCore.h
Fred 22/10  9:30pm:	Updated release procedure to include internal version changes to prevent incorrect ones recurring
					Removed burnbuf as unrequired now
					Bumped the versions in the constants file.
Fred 23/10  1:54am:	Completed and tested serial checksum and escape functionality.
Fred 23/10 11:54pm:	Added substantial packet handling logic.
Fred 25/10  3:00pm:	Fixed array length mismatch
					Added header decoding logic
					Refactored serial headers to be more sensible and share vars
					Removed instances of using "&= ~0x" from the code
					Renamed various serial variables
Fred 25/10  9:49pm:	Added line count of s19 to makefile
Fred 26/10 00:19am:	Added interface version request/response code
Fred 26/10  6:47pm:	Added firmware version request/response code
					Added max packet size request/response code
					Added echo wrapper packet request/response code
					Added hard reset request and action code (using real vector location)
					Added async error code packets
					Added async debug packets
					Added stringCopy utility to avoid using another library
					Added call to writeAlignedBlock function
Sean 29/10 11:30pm:	Fixed flashWrite.c mistakes
Fred 31/10  6:00pm:	Fixed issue number 4 by changing linker script with AT() clause
					Moved output dirs to lowercase and shorter names
					Moved some functions to fixedconf flash blocks temporarily
					Reclaimed 16 bytes of space with a mem.x fix
Fred 03/11 00:48am:	Made a number of fixes to the serial comms code to be detailed in later change log
Fred 04/11  7:25pm:	Migrated memory management to paged style upto 128k of space in one flash block.
Fred 07/11  1:23pm:	Added flash block return by ID function
Fred 08/11  1:38pm:	Added soft reset function
Fred 09/11	2:37am:	Added ram block return by ID function
					Added ram to flash burn by ID function
					Added comm to ram write by ID function
					Added comm to flash write by ID function (and update ram)
Fred 09/11 12:30pm:	Added memory location lookup and struct
Fred 09/11  5:29pm:	Removed bigtables linear page stuff
Fred 10/11  8:16am:	Added validation function for main tables
					Added limits to table return functions
					Fixed bug when address not ours dropping packet
Fred 10/11 11:26pm:	Added debug and error packets back in
					Merged Seans fixes for flash in
See the serial docs for info on how to talk to it. Ask questions and read code if things aren't clear.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

Not only did I have an EPIC sprint through Liverpool Street station this morning at about 100mph on foot catching air to avoid tripping when passing others far too close, BUT, ....

...I also made EPIC progress on the train in BOTH directions today :-)

Many thanks to Jean for inspiration/the idea (but slightly different) as we now have way less warnings and may get it down to none if I'm any good :-)

Half done right now, but screaming through it.

Also did a flash burn wrapper function and and other stuff too :-)

Dinner and more to come later!

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

Not much more/any came later, but I did get a snapshot to Sean for further testing and flash dev.

Bed time soon...

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

Got it building 100% cleanly tonight. No warnings etc from anything. I'll keep working on the serial stuff making it more robust and complete until I have it fairly clean. Then I'll document it all clearly and release again. Hopefully this weekend for the next great release.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

Fixed the hard reset bug and noticed a few things that need an eye kept on them in the future. It's writing something to all 8 pages of the flash memory which makes for a slightly more impressive load sequence :

Code: Select all

FLASH write: image file <zoutput/freeems-v0.0.18.s19>
FLASH write: image info <zoutput/freeems-v0.0.18.s19> entry <0xC000>
FLASH write: linear address range <0x3E0000-0x3E023B> size <0x023C>
FLASH write: linear address range <0x3E4000-0x3E4053> size <0x0054>
FLASH write: linear address range <0x3E8000-0x3E8113> size <0x0114>
FLASH write: linear address range <0x3EA000-0x3EBFFF> size <0x2000>
FLASH write: linear address range <0x3EC000-0x3EC113> size <0x0114>
FLASH write: linear address range <0x3EE000-0x3EFFFF> size <0x2000>
FLASH write: linear address range <0x3F0000-0x3F0113> size <0x0114>
FLASH write: linear address range <0x3F2000-0x3F3FFF> size <0x2000>
FLASH write: linear address range <0x3F6000-0x3F6113> size <0x0114>
FLASH write: linear address range <0x3F6400-0x3F65CB> size <0x01CC>
FLASH write: linear address range <0x3F6804-0x3F6FFF> size <0x07FC>
FLASH write: linear address range <0x3F7004-0x3F7FFF> size <0x0FFC>
FLASH write: linear address range <0x3F8000-0x3F805F> size <0x0060>
FLASH write: linear address range <0x3FC000-0x3FF40B> size <0x340C>
FLASH write: linear address range <0x3FF710-0x3FF7FF> size <0x00F0>
FLASH write: image [##################################################]
FLASH write: image size <46592 B> time <11.96 s> rate <3895 B/s>
Firmware load was successful!
It is strongly recommended that you re-extract the firmware and do a visual diff to confirm that the only change is the serial monitor being included.
Thank you for choosing the FreeEMS to run your engine, goodbye.
No release this weekend as I have promised to do some work on the hardware side. I've not written any significant code today or yesterday, just sorting out small issues and thinking things through etc. Tonight is sit down and scratch head about hardware interfacing and write docs for Jared/Dave. I doubt I'll have a conclusive answer tonight, but I should have some progress to report on in that respect.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

I've spent a few hours on the pin out tonight. I need to do 19 more pins and then have a solid think about the consequences of what I've found and draw up the document that describes how to design your hardware compatibly. I'll get stuck in and try to finish the pin out doc at the least tomorrow night. There is a lot to do besides just that now that I think about it. Best I make a list of stuff to do tomorrow on the train! :-)

Aaron and Ben have been doing epicly good work on the tuning app and I can't wait to try out tomorrows version :-)

Till then,

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

There has been a change of plan...

The good lady has been sick as a dog and demanded that I go straight to bed with her...

So I'm in bed... and no dev or pin research or anything much is going on.

I did get some news today though, I'm moving from a dead end project to christ knows where. I'm pretty sure the only way out of there is up though, so that's probably good.

This morning I philosophised about the code in various ways and thought up a few ways to make it both faster AND more readable. The only down side is more memory usage. I'll look into doing something about that tomorrow on the train. This evening I spent some time on the hardware interface document. I need to dig up some threads and have a read and think before I put too much more effort into it. It should really consist of the contents of those threads distilled into a clear concise document, not something I dreamed up on a train while tired...

So much to do, no time to do it!

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

Code: Select all

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 4] .fixedconf1       PROGBITS        00007800 003800 000113 00 WAX  0   0  1
  [ 5] .fixedconf2       PROGBITS        00007c00 003c00 0001cc 00 WAX  0   0  1
  [ 6] .dpageFA          PROGBITS        003fa000 00d000 002000 00  WA  0   0  1
  [ 7] .fpageFA          PROGBITS        003f8000 00c000 000112 00  AX  0   0  1
  [ 8] .fpageFB          PROGBITS        003fc000 00f000 000112 00  AX  0   0  1
  [ 9] .dpageFB1         PROGBITS        003fe000 010000 000400 00  WA  0   0  1
  [10] .dpageFB2         PROGBITS        003fe400 010400 000400 00  WA  0   0  1
  [11] .dpageFB3         PROGBITS        003fe800 010800 000400 00  WA  0   0  1
  [12] .dpageFB4         PROGBITS        003fec00 010c00 000400 00  WA  0   0  1
  [13] .dpageFB5         PROGBITS        003ff000 011000 000400 00  WA  0   0  1
  [14] .dpageFB6         PROGBITS        003ff400 011400 000400 00  WA  0   0  1
  [15] .dpageFB7         PROGBITS        003ff800 011800 000400 00  WA  0   0  1
  [16] .dpageFB8         PROGBITS        003ffc00 011c00 000400 00  WA  0   0  1
  [17] .dpageFC          PROGBITS        00402000 013000 002000 00  WA  0   0  1
  [18] .fpageFC          PROGBITS        00400000 012000 000112 00  AX  0   0  1
  [19] .ppageF9          PROGBITS        003f4000 00a000 001a9d 00 WAX  0   0  1
  [20] .ppageFE          PROGBITS        00408000 015000 00005d 00  AX  0   0  1
  [21] .text             PROGBITS        0000c000 004000 003062 00  AX  0   0  4
  [22] .rodata           PROGBITS        0000f062 007062 000104 00   A  0   0  1
  [23] .data             PROGBITS        00003030 008030 000008 00  WA  0   0  1
  [33] .ppageF8          PROGBITS        003f0000 009000 00028e 00  AX  0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)
I'd say it's not just a simple little demo app anymore, wouldn't you? :-)

Good work on the train tonight on the code.
Good work on the hardware interface doc this morning.
Good work on a draft data map document today lunch time.

The lady required my attention this evening though, so no pin work again, but tomorrow will see some work on that hopefully.

I want it done 100% inside the next week and a half.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15433
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Fred's firmware development diary

Post by Fred »

And for RAM :

Code: Select all

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 1] .rpage            PROGBITS        00001000 001000 001000 00  WA  0   0  1
  [ 2] .txbuf            PROGBITS        00002000 002000 000820 00  WA  0   0  1
  [ 3] .rxbuf            PROGBITS        00002820 002820 000810 00  WA  0   0  1
  [24] .bss              NOBITS          00003038 003038 0004c9 00  WA  0   0  1
Though, this doesn't tell the full story... rpage is broken into 4 chunks x 6 pages and there may be a flash burning buffer placed into the RAM space in the future to allow burns of granular parts of the tune while other live adjusted parts are not burned.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
Locked