Code Monkey home page Code Monkey logo

mm's People

Contributors

bdf369 avatar cire831 avatar cjshaker avatar cleanfacets avatar danome avatar flyrlfs avatar klueska avatar milesmaltbie avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mm's Issues

Radio overrun error causes panic

If the Radio driver does not handle the fifo threshold interrupt in time, the Radio presents a receive fifo overrun interrupt. This causes the Radio FSM to transition for RX_ACTIVE to RX_ON. This is followed by a Radio THRESH interrupt which is invalid in the RX_ON state - so panic happens.

Radio PANIC: S_RX_ON/E_SYNC_DETECT null transition

mm6a/proto2, gold, 0.2.69, prod: [tp-master-0-gc57b580-dirty], mm: [cire_working-0-g75ba8b3-dirty]
changes inconsequential

Possibly a strange transition. had the mm6a initialized but held (debugger) at MCUSleep. Fired up the Base Station and fired up tagdump. ie. radio traffic.

*** Panic: 28(d), w: 81(d), a: 000a 0006 0000 0000

Si446xDriverLayerP.nc:287
    if (trans == NULL)
      __PANIC_RADIO(81, ev, st, 0, 0);

We are in RX_ON and see a SYNC_DETECT. This is an illegal transition and panic is correct. We should have seen a PREAMBLE_DETECT first, then the SYNC_DETECT.

The driver interrupt handler does look for both PREAMBLE_DETECT and SYNC_DETECT being coincident and gives PREAMBLE_DETECT priority.

Seems weird that the h/w somehow lost the PREAMBLE_DETECT. Note that this is a weird case because we had the Tag stopped via the debugger so the CPU wasn't taking interrupts.

We may need to instrument this case. That is ignore a SYNC_DETECT in RX_ON but increment a status variable, sync_no_preamble.

SD Init.init times out when optimized.

Dev6a platform, tos/chips/mems/tests/MemsTestP. When first booting, PlatformPeripheralInit calls the SD init code when writes one byte out to set SIMO high. There is a hard coded timeout to make sure it doesn't hang.

When compiled unoptimized this works, optimized times out.

have not duplicated.

PANIC doesn't seem to show up on next boot

observed gps eaves drop code sometimes with the mm6a proto sees too much traffic and it fills the 5 SSW buffers which causes a panic. But the reboot record shows up as a clobber as opposed to a PANIC.

tagnet: note can duplicate - retran issue.

currently there is no way for the Base to tell the Tag which note this is. So if for some reason the Base times out it will resend the note. If the Tag has already received the first message the second message will also get written.

fix is to add a note_num cell on the tag. (needs to be some way to retreive it as well). When the Base sends a new note it needs to be numbered. The tag looks to see if it is a duplicate.

this needs to be better thought through....

should it be a base tagnet function. probably.

Panic should reuse last slot when full

Panic could fill up the Panic Area. The question what to do with the next panic.

well. ideally the base will have read and cleared the panics, but then we aren't full.

we could:

  • just stop (lose the latest panic, eh.)
  • wrap (loses the first panic, double eh)
  • over write the last panic.

the last seems like the way to go.

formating sd on VM/Mac doesn't look like it works. (stuck busy bit?)

blk_id 0 looks funny.

somebody over wrote the boot sector, we don't know who.

zot (3): xdw -N 10K /dev/mmcblk0 
000000 168c000c 87298027 00000604 0ac4b83d  >....'.).....=...<
000010 00000619 27188080 fefeffff fefefeff  >.......'........<
000020 00000000 80808080 00008080 00000003  >................<
000030 002c0288 a2d9716c d946035b 51e14be7  >..,.lq..[.F..K.Q<
000040 6fc29ff0 0e108183 aa100001 0003aaaa  >...o............<
000050 00080000 dc052045 0040bfcc a90d062f  >....E ....@./...<
000060 b6a642c7 f23ca8c0 d6c85000 100ebdbf  >.B....<..P......<
000070 f78fe56d 2c011850 0000d2fb fbb4c46b  >m...P..,....k...<
000080 e5d5e258 865c83b0 5a854cfb 3047d669  >X.....\..L.Zi.G0<
000090 f9a8d009 39969c77 01f01cfe f08f5ee9  >....w..9.....^..<
0000a0 c4875fe3 a0cd1d3a 48db1a53 ca395461  >._..:...S..HaT9.<
0000b0 e7f5f02f 345d1120 39b3dbe6 5497472a  >/... .]4...9*G.T<
0000c0 8be61a70 c9aa892e 333b3067 0cc707ba  >p.......g0;3....<
0000d0 d8efb19d 1c6c61d6 0727d992 b257fa23  >.....al...'.#.W.<
0000e0 f8a76fcb 3b4dceaa 90974d52 702a29b3  >.o....M;RM...)*p<
0000f0 ca8dc3ca 8bab3d7d eb1bfed4 d9bf9216  >....}=..........<
000100 4fd8bb3c 7e2be4dd 57f9f120 cec18897  ><..O..+~ ..W....<
000110 d115bc32 e20c38f5 55a3e094 39835fda  >2....8.....U._.9<
000120 0f20dc08 d4ebf4b4 902d81d3 951f1940  >.. .......-.@...<
000130 3c822f6d f6675f42 5c00ff6c 6b9e1fa8  >m/.<B_g.l..\...k<
000140 69f84b7f b13e9373 b8b51d77 cb46a3e5  >.K.is.>.w.....F.<
000150 81c7ee11 c311d6fa 89b29355 c23253dd  >........U....S2.<
000160 5f7357d2 77f8442d adc63da5 f9e0aa2e  >.Ws_-D.w.=......<
000170 4763aa16 db631923 bbce1ff0 8b556b5d  >..cG#.c.....]kU.<
000180 ea9ab245 8bbfdb4d f01ccb68 2b7b5514  >E...M...h....U{+<
000190 b3ba25fb 54c434d2 a88c43b4 f9cfb1e1  >.%...4.T.C......<
0001a0 f891eb3d 46fd368b de49dece 525ad538  >=....6.F..I.8.ZR<
0001b0 7fc7a1a3 7bad1fc3 52a8e014 173f3eb2  >.......{...R.>?.<
0001c0 43cc7888 3d5df4a8 d5547b0e 406a0d35  >.x.C..]=.{T.5.j@<
0001d0 ad489a65 549e4dde b9e71827 50457dee  >e.H..M.T'....}EP<
0001e0 a3d3cffe b93cb90b 21a7fb24 39d8dd86  >......<.$..!...9<
0001f0 8f335e6f 7fc55371 25c85a1a b061d285  >o^3.qS...Z.%..a.<

should be something like:

000000 6d9058eb 2e73666b 00746166 00200802  >.X.mkfs.fat... .<
000010 00000002 0000f800 007a003e 00000000  >........>.z.....<
000020 00762c00 00001d7d 00000000 00000002  >.,v.}...........<
000030 00060001 00000000 00000000 00000000  >................<
000040 13290180 5489a4f3 47344741 20202020  >..)....TAG4G    <
000050 41462020 20323354 1f0e2020 ac7c77be  >  FAT32   ...w|.<
000060 0b74c022 bb0eb456 10cd0007 32f0eb5e  >".t.V.......^..2<
000070 cd16cde4 54feeb19 20736968 6e207369  >.......This is n<
000080 6120746f 6f6f6220 6c626174 69642065  >ot a bootable di<
000090 202e6b73 656c5020 20657361 65736e69  >sk.  Please inse<
0000a0 61207472 6f6f6220 6c626174 6c662065  >rt a bootable fl<
0000b0 7970706f 646e6120 72700a0d 20737365  >oppy and..press <
0000c0 20796e61 2079656b 74206f74 61207972  >any key to try a<
0000d0 6e696167 2e2e2e20 000a0d20 00000000  >gain ... .......<
0000e0 00000000 00000000 00000000 00000000  >................<
*
000140 deedbeaf 00003b22 00003c21 00003c22  >....";..!<.."<..<
000150 00003c31 00003c32 00004039 0000403a  >1<..2<..9@..:@..<
000160 00762bf9 00000000 00000000 00000000  >.+v.............<
000170 00000000 00000000 00000000 00000000  >................<
000180 00000000 deedbeaf 0000ec1e 00000000  >................<
000190 00000000 00000000 00000000 00000000  >................<
*
0001f0 00000000 00000000 00000000 aa550000  >..............U.<

Radio: looks like CRC is inconsistent

need low level test code running number etc. with and without antenna to check for bad packets getting through. Each packet needs to have a 16 bit/32 bit checksum to validate in addition to the CRC stuff.

Tagfuse: echo -ne "\nescape sequence\t\n" > note goes nuts

Tagnet: @ cire831/TagNet@707850e
mm: @ gh:cire831/mm@3c71dfc

On P222 basestation (unknown configuration):

tagfuse running like:

mkdir tag/sparse
cd tag/sparse
python ~/tag/Tagnet/tagfuse/tagfuse ~/tag/tag01

on P222 in another terminal we did:

ll -a, followed by the two notes. The 2nd note went infinite until I aborted it.

P222 (15): ll -a
total 0
drwxr-x--x 8 pi pi       0 Feb 24 13:32 ./
drwxr-x--x 6 pi pi       0 Feb 24 13:32 ../
-r--r--r-- 1 pi pi 3529132 Feb 24 14:38 byte
-r--r--r-- 1 pi pi 3528192 Feb 24 14:38 .committed
-r--r--r-- 1 pi pi 3529096 Feb 24 14:38 .last_rec
-r--r--r-- 1 pi pi 3529096 Feb 24 14:38 .last_sync
-rw-rw---- 1 pi pi      13 Feb 24 14:38 note
-r--r--r-- 1 pi pi   57599 Feb 24 14:38 .recnum
P222 (16): echo -n "2:38pm" > note
P222 (17): echo -ne "\nescape sequence\t\n" > note
^C^C-bash: echo: write error: Software caused connection abort

had to abort both sides.

Output from tagfuse (didn't capture the start):

*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
DEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']
DEBUG:fuse.log-mixin:<- write 0
^CDEBUG:fuse.log-mixin:-> write /ffffffffffff/tag/sd/0/dblk/note ('escape sequence\t\n', 1L, <fuse.fuse_file_info object at 0x75df7e90>)
*** poll net dir 0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'note']

TagDump: -d fuse better error messages

If the fuse driver is in an inconsistent state. Shutdown but not cleaned up tagdump outputs:

P222 (16): tagdump -d -j -1 ~/tag/tag01/\<node_id:ffffffffffff\>/tag/sd/0/dblk/                                                                                                                                                                                                           
usage: tagdump [-h] [-V] [--rtypes RTYPES] [-D] [-d] [-j JUMP] [-x ENDPOS] [-n NUM] [-s START_TIME] [-e END_TIME] [-r START_REC]                                                                                                                                                          
               [-l LAST_REC] [-v]                                                                                                                                                                                                                                                         
               input                                                                                                                                                                                                                                                                      
tagdump: error: argument input: can't open '/home/pi/tag/tag01/<node_id:ffffffffffff>/tag/sd/0/dblk/': [Errno 107] Transport endpoint is not connected: '/home/pi/tag/tag01/<node_id:ffffffffffff>/tag/sd/0/dblk/'                                                                        
P222 (17):  

If FUSE isn't running we get:

tagdump: error: argument input: can't open '/home/pi/tag/tag01/<node_id:ffffffffffff>/tag/sd/0/dblk/': [Errno 2] No such file or directory: '/home/pi/tag/tag01/<node_id:ffffffffffff>/tag/sd/0/dblk/' 

want to catch these errors and give something a bit more meaningful.

Panic: PanicAdapter/PanicManager interface issues, block_index

The PanicAdapter(TagNet) needs to be able to populate .../<node_id>/.../sd/<n>/PANIC.

change block_sector to block_index. block_index indicates how many panics have been written. ie it is the next block to wack.

add block_index_max which is one more than maximum valid block_index. When block_index is >= block_index_max, we are full and all panic slots are used. ie. 32.

also need an interface to avoid exposing internals of how Panic does shit.

  • PanicMgr.populate_dir/populate_dir_done
  • PanicMgr.get_panic_index
  • PanicMgr.get_panic_index_max.
  • PanicMgr.panic_index2sector

bkpt() in SirfBinP.nc

Don't know why this is here. Hit it today when testing Over-the-air image transfer.

GPSTransmit.send under some conditions causes TXTimer TO panic

In ON_TX and we get a TXTimer.fired which panics.

GPSTransmit.send send 14 bytes, the timeout calculation is correct but the timer is fired erroneously. The 14 bytes took ~1ms to transmits and the timeout was set to 4 and later 8 ms but expired anyway.

gps: send_sw_ver doesn't work on POR

on initial boot (no ram retention, gps powered off), cycles twice got gps_start, we see the tx of send_sw_ver, no response from the GPS. But it boots.

--- offset  recnum  systime  len  type  name
--- @512         1      197  116     1  REBOOT   unset -> GOLD  [GOLD]  (0)
--- @628         2      197  168     2  VERSION  GOLD  0.2.62  hw: mm6a/1
--- @796         3      198   40     4  EVENT  GPS_BOOT  0  0
--- @836         4      198   40     4  EVENT  GPS_START  198  0
--- @876         5     1427   44    32  GPS_RAW -- MID: 178 (b2) <tx> peek/poke  
--- @920         6     1481   52    32  GPS_RAW -- MID: 70 (46) <tx> unk        
--- @972         7     1562   44    32  GPS_RAW -- MID: 178 (b2) <tx> peek/poke  
--- @1016        8     1616   52    32  GPS_RAW -- MID: 70 (46) <tx> unk        
--- @1068        9     1669   44    32  GPS_RAW -- MID: 178 (b2) <tx> peek/poke  
--- @1112       10     1674   40     4  EVENT  GPS_FIRST  1674  1476
--- @1152       11     1675   34    32  GPS_RAW -- MID: 132 (84) <tx> send_sw_ver 
--- @1188       12     1675   35    32  GPS_RAW -- MID: 11 (0b) <rx> ACK        
--- @1224       13     1677   40     4  EVENT  GPS_BOOT_TIME  198  1478
--- @1264       14     1677   40     4  EVENT  GPS_RX_ERR  36  1
--- @1304       15     1813  123    32  GPS_RAW -- MID: 41 (29) <rx> GEO_DATA   
--- @1428       16     1823   40     4  EVENT  GPS_SATS_29  0  1

no response from the send_sw_ver.

Update tagfmtsd (bugs and conversion to FATtools?)

Current tagfmtsd is written C and has a number of problems:

  • 4G+ cards by default have a partition from the factory which confuses tagfmtsd.
  • tagfmtsd formats 2G and 4G SD correctly. Doesn't handle >4G SDs correctly.
  • tagfmtsd insists on using a single non-partitioned superblock (which is ugly).
  • we want tagfmtsd to work better with factory formatted SDs. ie. we want to be able to utilize partitions. ie. we no longer have to first format the SD before running tagfmtsd.
  • tagfmtsd doesn't work at all on apple machine (fails to compile?)

We could relearn tagfmtsd to enable fixing the above.

Or we could spend the time learning FATtools and rewrite tagfmtsd as tagfmtsd.py and convert to python. That seems like the way to go. And make the program much more portable.

  • 4G+ cards by default have a partition from the factory which confuses tagfmtsd.
zot (53): tagfmtsd /dev/mmcblk0
fs_loc:  not found (1)
*** bad fx_cluster_size (64) should be (8)
tagfmtsd: ../fat/fatxfc.c:493: fx_init: Assertion `fx_rdir_start && fx_rdir_end' failed.
Aborted (core dumped)
zot (54): gdisk -l /dev/mmcblk0
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************


Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/mmcblk0: 7744512 sectors, 3.7 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 4AFD22DD-8458-4594-BA25-DD75E59FF7BD
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7744478
Partitions will be aligned on 2048-sector boundaries
Total free space is 8158 sectors (4.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            8192         7744511   3.7 GiB     0700  Microsoft basic data
zot (55): 

SI446X: Invalid event SYNC_DETECT in RX_ON state

Radio Driver state machine receives a SYNC_DTECT event while in RX_ON state.

An INVALID_SYNC event had occurred right before this one, which causes the state machine to return to RX_ON from RX_ACTIVE.

Below are the:

  • Breakpoint
  • Backtrace
  • SPI Trace
  • FSM Trace
  • Radio Config

BREAKPOINT

Breakpoint 3, PanicP__debug_break (arg=0x1) at /home/vagrant/data/tag_integration/mm/tos/system/panic/PanicP.nc:105
105 _arg = arg;
=> 0x000008a4 <PanicP__debug_break+8>: 41 4a ldr r2, [pc, #260] ; (0x9ac <PanicP__debug_break+272>)
0x000008a6 <PanicP__debug_break+10>: 7b 68 ldr r3, [r7, #4]
0x000008a8 <PanicP__debug_break+12>: 13 60 str r3, [r2, #0]
(gdb)

*** Panic: 28(d), w: 81(d), a: 000a 0006 0000 0000

BACKTRACE

(gdb) bt
#0 PanicP__debug_break (arg=0x1) at /home/vagrant/data/tag_integration/mm/tos/system/panic/PanicP.nc:105
#1 0x00000724 in PanicP__Panic__panic (pcode=0x1c, where=0x51, arg0=0xa, arg1=0x6, arg2=0x0, arg3=0x0) at /home/vagrant/data/tag_integration/mm/tos/system/panic/PanicP.nc:351
#2 0x0000406e in Si446xDriverLayerP__Panic__panic (pcode=0x1c, where=0x51, arg0=0xa, arg1=0x6, arg2=0x0, arg3=0x0) at /home/vagrant/data/tag_integration/prod/tos/interfaces/Panic.nc:98
#3 0x00004fda in Si446xDriverLayerP__fsm_select_transition (ev=Si446xDriverLayerP__E_SYNC_DETECT, st=Si446xDriverLayerP__S_RX_ON) at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xDriverLayerP.nc:288
#4 0x00004c52 in Si446xDriverLayerP__fsm_change_state (ev=Si446xDriverLayerP__E_SYNC_DETECT) at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xDriverLayerP.nc:412
#5 0x00004412 in Si446xDriverLayerP__process_interrupt () at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xDriverLayerP.nc:1456
#6 0x00004330 in Si446xDriverLayerP__Tasklet__run () at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xDriverLayerP.nc:1492
#7 0x0000430c in TaskletC__0__Tasklet__run () at /home/vagrant/data/tag_integration/prod/tos/lib/rfxlink/util/Tasklet.nc:48
#8 0x000042ba in TaskletC__0__doit () at /home/vagrant/data/tag_integration/prod/tos/lib/rfxlink/util/TaskletC.nc:82
#9 0x000042a4 in TaskletC__0__Tasklet__schedule () at /home/vagrant/data/tag_integration/prod/tos/lib/rfxlink/util/TaskletC.nc:129
#10 0x00004250 in Si446xDriverLayerP__Tasklet__schedule () at /home/vagrant/data/tag_integration/prod/tos/lib/rfxlink/util/Tasklet.nc:59
#11 0x00016b8e in Si446xDriverLayerP__fsm_int_queue (ev=Si446xDriverLayerP__E_CONFIG_DONE) at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xDriverLayerP.nc:319
#12 0x00016b52 in Si446xDriverLayerP__Si446xCmd__interrupt () at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xDriverLayerP.nc:1300
#13 0x00016b3c in Si446xCmdP__Si446xCmd__interrupt () at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xCmd.nc:144
#14 0x00016b2c in Si446xCmdP__HW__si446x_interrupt () at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xCmdP.nc:935
#15 0x00016afc in Si446xPinsP__HW__si446x_interrupt () at /home/vagrant/data/tag_integration/mm/tos/chips/si446x/Si446xInterface.nc:164
#16 0x00016af0 in Si446xPinsP__RadioNIRQ__fired () at /home/vagrant/data/tag_integration/mm/tos/platforms/dev6a/hardware/si446x/Si446xPinsP.nc:80
#17 0x00016ad4 in HplMsp432PortIntP__Int__fired (arg_0x7fa6922b3770=0x51) at /home/vagrant/data/tag_integration/prod/tos/chips/msp432/msp432p401/pins/HplMsp432PortInt.nc:68
#18 0x00016a36 in HplMsp432PortIntP__port_handler (port_id=0x50, n=0x4) at /home/vagrant/data/tag_integration/prod/tos/chips/msp432/msp432p401/pins/HplMsp432PortIntP.nc:92
#19 0x00016c48 in PORT5_Handler () at /home/vagrant/data/tag_integration/prod/tos/chips/msp432/msp432p401/pins/HplMsp432PortIntP.nc:185
#20
0xfffffff9: Cannot access memory at address 0xfffffff8
#21 0x00011708 in ImageManagerP__SDwrite__writeDone (blk=0x1ea2, buf=0x20002be0 <ImageManagerP__imcb+8> "rA%\027\004", error=SUCCESS) at /home/vagrant/data/tag_integration/mm/tos/mm/ImageManagerP.nc:1240
#22 0x00011616 in SDspP__0__SDwrite__writeDone (arg_0x7fa69393db60=0x3, blk=0x1ea2, buf=0x20002be0 <ImageManagerP__imcb+8> "rA%\027\004", error=SUCCESS) at /home/vagrant/data/tag_integration/mm/tos/chips/sd/SDwrite.nc:53
#23 0x0001155e in SDspP__0__sd_write_task__runTask () at /home/vagrant/data/tag_integration/mm/tos/chips/sd/SDspP.nc:971
#24 0x00003d86 in SchedulerBasicP__TaskBasic__runTask (arg_0x7fa69449bb20=0x3) at /home/vagrant/data/tag_integration/prod/tos/interfaces/TaskBasic.nc:75
#25 0x00013ffc in SchedulerBasicP__Scheduler__taskLoop () at /home/vagrant/data/tag_integration/prod/tos/system/SchedulerBasicP.nc:162
#26 0x00013fbc in RealMainP__Scheduler__taskLoop () at /home/vagrant/data/tag_integration/prod/tos/interfaces/Scheduler.nc:72
#27 0x00000526 in main () at /home/vagrant/data/tag_integration/prod/tos/system/RealMainP.nc:96

FSM TRACE

t 110: time:0xfd6fc49 (0x9c9 ) E_PACKET_SENT S_TX_ACTIVE A_TX_CMP S_RX_ON
t 111: time:0xfd850e3 (0xc8 ) E_PREAMBLE_DETECT S_RX_ON A_RX_START S_RX_ACTIVE
t 112: time:0xfd8697f (0x26 ) E_SYNC_DETECT S_RX_ACTIVE A_NOP S_RX_ACTIVE
t 113: time:0xfd8bcf1 (0x6a8 ) E_RX_THRESH S_RX_ACTIVE A_RX_FETCH_FF S_RX_ACTIVE
t 114: time:0xfd8fca8 (0x1187) E_PACKET_RX S_RX_ACTIVE A_RX_CMP S_RX_ON
t 115: time:0xfdaaa50 (0xe09 ) E_TRANSMIT S_RX_ON A_TX_START S_TX_ACTIVE
t 116: time:0xfdb16c3 (0x2a ) E_TX_THRESH S_TX_ACTIVE A_TX_FILL_FF S_TX_ACTIVE
t 117: time:0xfdb8309 (0x9c9 ) E_PACKET_SENT S_TX_ACTIVE A_TX_CMP S_RX_ON
t 118: time:0xfdbbe6a (0xc8 ) E_PREAMBLE_DETECT S_RX_ON A_RX_START S_RX_ACTIVE
t 119: time:0xfdbc062 (0x9c3 ) E_INVALID_SYNC S_RX_ACTIVE A_CLEAR_SYNC S_RX_ON

SPI TRACE

61 0xfdb8b12 || SPI_REC_SEND_CMD 32 0x8 3200 0000 0000 0303
62 0xfdb8bf6 fast_frr_s 0300 0000 state: READY, rssi: 0
63 0xfdb8cb5 fast_frr_s 0800 0000 state: RX, rssi: 0
64 0xfdb8d9e fast_frr_s 0800 0800 state: RX modem_pend: RSSI, rssi: 0
65 0xfdb8e3b 0x20 20
66 0xfdb8fa3 blen:slen 8:8, int_status_rsp_s 0006 0022 0808 1014 modem_pend: RSSI chip_pend: STATE_CHANGE ph_status: PACKET_SENT TX_FIFO_ALMOST_EMPTY modem_status: RSSI chip_status: STATE_CHANGE CHIP_READY
67 0xfdb907a fast_frr_s 0800 0000 state: RX, rssi: 0
68 0xfdb9150 fast_frr_s 0800 0000 state: RX, rssi: 0
69 0xfdb91ee 0x20 20
70 0xfdb9357 blen:slen 8:8, int_status_rsp_s 0000 0022 0008 0014 ph_status: PACKET_SENT TX_FIFO_ALMOST_EMPTY modem_status: RSSI chip_status: STATE_CHANGE CHIP_READY
71 0xfdb942d fast_frr_s 0800 0000 state: RX, rssi: 0
72 0xfdbb971 fast_frr_s 0311 a7a8 state: READY ph_pend: PACKET_RX RX_FIFO_ALMOST_FULL modem_pend: INVALID_SYNC INVALID_PREAMBLE PREAMBLE_DETECT SYNC_DETECT, rssi: 168
73 0xfdbba4b fast_frr_s 0311 a7a8 state: READY ph_pend: PACKET_RX RX_FIFO_ALMOST_FULL modem_pend: INVALID_SYNC INVALID_PREAMBLE PREAMBLE_DETECT SYNC_DETECT, rssi: 168
74 0xfdbbae7 0x20 20
75 0xfdbbc50 blen:slen 8:8, int_status_rsp_s 0307 1133 a788 1014 ph_pend: PACKET_RX RX_FIFO_ALMOST_FULL modem_pend: INVALID_SYNC INVALID_PREAMBLE PREAMBLE_DETECT SYNC_DETECT chip_pend: STATE_CHANGE ph_status: PACKET_SENT PACKET_RX TX_FIFO_ALMOST_EMPTY RX_FIFO_ALMOST_FULL modem_status: RSSI chip_status: STATE_CHANGE CHIP_READY
76 0xfdbbd26 fast_frr_s 0300 00a8 state: READY, rssi: 168
77 0xfdbbdc2 fast_frr_s 03
78 0xfdbbe23 fast_frr_s a8
79 0xfdbbed8 fast_frr_s a8
80 0xfdbbfb9 fast_frr_s 03
81 0xfdbc01a fast_frr_s a8
82 0xfdbc0ee 1502 PARSE ERROR: fifo_info_rsp_s 1502
83 0xfdbc1ad blen:slen 2:2, fifo_info_rsp_s 0040 Container({'rx_fifo_count': 0, 'tx_fifo_space': 64, 'cts': 255})
84 0xfdbc27a fast_frr_s 0300 00a8 state: READY, rssi: 168
85 0xfdbc352 fast_frr_s 0300 00a8 state: READY, rssi: 168
86 0xfdbc3f8 1503 PARSE ERROR: fifo_info_rsp_s 1503
87 0xfdbc4b7 blen:slen 2:2, fifo_info_rsp_s 0040 Container({'rx_fifo_count': 0, 'tx_fifo_space': 64, 'cts': 255})
88 0xfdbc583 fast_frr_s 0300 00a8 state: READY, rssi: 168
89 0xfdbc65c fast_frr_s 0300 00a8 state: READY, rssi: 168
90 0xfdbc726 0x20 20ff ffff
91 0xfdbc863 || SPI_REC_SEND_CMD 32 0x8 3200 0000 0000 0303
92 0xfdbc947 fast_frr_s 0300 00a8 state: READY, rssi: 168
93 0xfdbca06 fast_frr_s 0800 0000 state: RX, rssi: 0
94 0xfdbcaac fast_frr_s 08
95 0xfdbcb0d fast_frr_s 00

RADIO CONFIG

(gdb) radiogroups
MODEM_CHFLT MODEM_CHFLT Struct('modem_chflt_group_s') a281 26af 3fee c8c7 dbf2 0208 0703 15fc 0f00 a281 26af 3fee c8c7 dbf2 0208 0703 15fc 0f00
Container:
chflt_rx1_chflt_coe = '\xa2\x81&\xaf?\xee\xc8\xc7\xdb\xf2\x02\x08\x07\x03\x15\xfc\x0f\x00'
chflt_rx2_chflt_coe = '\xa2\x81&\xaf?\xee\xc8\xc7\xdb\xf2\x02\x08\x07\x03\x15\xfc\x0f\x00'
PKT PKT Struct('pkt_group_s') 8501 08ff ff00 8200 2a01 0028 1900 0104 a200 0000 0000 0000 0000 0000 0000 0000 0000 0104 8200 ff00 0a00 0000 0000 0000 0000 0000 00
Container:
crc_config = Container:
crc_seed = 'CRC_SEED_1'
crc_polynomial = 'CCITT_16'
wht_poly = 264
wht_seed = 65535
wht_bit_num = Container:
sw_wht_ctrl = 'DISABLE'
sw_crc_ctrl = 'DISABLE'
wht_bit_num_ = 'ENUM_0'
config1 = Container:
ph_field_split = 'FIELD_SPLIT'
ph_rx_disable = 'RX_ENABLED'
4fsk_en = 'DISABLE'
manch_pol = 'PATTERN_10'
crc_invert = 'NO_INVERT'
crc_endian = 'MSBYTE_FIRST'
bit_order = 'LSBIT_FIRST'
len = Container:
endian = 'BIG'
size = 'ONE_BYTE'
in_fifo = 'LEAVE_IN'
dst_field = 'FIELD_2'
len_field_source = Container:
src_field = 'FIELD_1_'
len_adjust = 0
tx_threshold = 40
rx_threshold = 25
tx1 = Container:
length = 1
config = Container:
4fsk = 'DISABLE'
pn_start = 'LOAD'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'ENABLE'
send_crc = 'ENABLE'
check_crc = 'DISABLE'
crc_enable = 'ENABLE'
tx2 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
tx3 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
tx4 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
tx5 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
rx1 = Container:
length = 1
config = Container:
4fsk = 'DISABLE'
pn_start = 'LOAD'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'ENABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'ENABLE'
rx2 = Container:
length = 255
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'ENABLE'
crc_enable = 'ENABLE'
rx3 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
rx4 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
rx5 = Container:
length = 0
config = Container:
4fsk = 'DISABLE'
pn_start = 'CONTINUE'
whiten = 'DISABLE'
manch = 'DISABLE'
crc_config = Container:
crc_start = 'DISABLE'
send_crc = 'DISABLE'
check_crc = 'DISABLE'
crc_enable = 'DISABLE'
RX_HOP RX_HOP Struct('rx_hop_group_s') 0401 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 3839 3a3b 3c3d 3e3f
Container:
control = 4
table_size = 1
table_entries = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?'
GLOBAL GLOBAL Struct('global_group_s') 5200 1860 0000 0160 0000
Container:
xo_tune = 82
clk_cfg = Container:
divided_clk_en = 'DISABLE'
divided_clk_sel = 'DIV_1'
clk_32k_sel = 'OFF'
low_batt_thresh = 24
global_config = Container:
sequencer_mode = 'FAST'
fifo_mode = 'SPLIT_FIFO'
protocol = 'GENERIC'
power_mode = 'HIGH_PERF'
wut_config = Container:
wut_ldc_enable = 'DISABLE'
wut_cal_period = '1_SEC'
wut_lbd_en = 'DISABLE'
wut_en = 'DISABLE'
cal_en = 'DISABLE'
wut_m = 1
wut_r = Container:
RESERVED_WRITE_ONE = 'ONE'
wut_sleep = 'SLEEP'
wut_r
= 0
wut_ldc = 0
wut_cal = 0
FREQ_CONTROL FREQ_CONTROL Struct('freq_control_group_s') 380e eeee 4444 20fe
Container:
inte = 56
frac = Container:
i = 978670
channel_step_size = 17476
w_size = 32
vcocnt_rx_adj = 254
SYNC SYNC Struct('sync_group_s') 01b4 2b2d d4
Container:
config = Container:
skip_tx = 'SYNC_XMIT'
rx_errors = 0
4fsk = 'DISABLE'
manch = 'DISABLE'
length = 'LEN_2_BYTES'
sync_bits = 3022728660L
PA PAx Struct('pa_group_s') 0835 003d 8023
power level: 53
INT_CTL INT_CTL Struct('int_ctl_group_s') 073b 2328
enable: CHIP_INT_STATUS_EN MODEM_INT_STATUS_EN PH_INT_STATUS_EN ph_pend: PACKET_SENT PACKET_RX CRC_ERROR TX_FIFO_ALMOST_EMPTY RX_FIFO_ALMOST_FULL modem_pend: INVALID_SYNC PREAMBLE_DETECT SYNC_DETECT chip_pend: FIFO_UNDERFLOW_OVERFLOW_ERROR CMD_ERROR
SYNTH SYNTH Struct('synth_group_s') 2c0e 0b04 0c73 0305
Container:
pfdcp_cpff = 44
pfdcp_cpint = 14
vco_kv = 11
lpfilt3 = 4
lpfilt2 = 12
lpfilt1 = 115
lpfilt0 = 3
vco_kvcal = 5
MODEM MODEM Struct('modem_group_s') 0300 0706 1a80 05c9 c380 0005 7600 0067 604d 3621 1108 0301 0180 0803 8000 2020 0000 0177 015d 8600 af02 c200 0436 801d 1004 8000 00e2 0000 1152 5200 1aff ff00 2a0c a402 d683 00ad 0180 200c 2200 4003 000a
Container:
mod_type = Container:
tx_direct_mode_type = 'SYNC'
tx_driect_mode_gpio = 'GPIO_1'
mod_source = 'PACKET'
mod_type = '_2GFSK'
map_control = Container:
enmanch = 'DISABLE'
eninv_rxbit = 'NO_INVERT'
eninv_txbit = 'NO_INVERT'
eninv_fd = 'NO_INVERT_POL'
dsm_ctrl = Container:
dsmclk_sel = 'PLL'
dsm_mode = 'MASH'
dsmdt_en = 'DISABLE'
rsmdttp = 'ZERO'
dsm_rst = 'ENABLE'
dsm_lsb = 'FORCED_HIGH'
dsm_order = 'THIRD_ORDER'
data_rate = Container:
m = 400000
tx_nco_mode = Container:
txosr = 'GAUSS_40X'
ncomod = 30000000
freq_dev = Container:
freqdev = 1398
freq_offset = 0
filter_coeff = 'g`M6!\x11\x08\x03\x01'
tx_ramp_delay = 1
mdm_ctrl = 128
if_control = Container:
zeroif = 'NORMAL'
fixif = 'FIXED'
if_freq = Container:
hertz = 229376
decimation_cfg1 = 32
decimation_cfg0 = 32
bcr_osr = 375
bcr_nco = Container:
offset = 89478
bcr_gain = 175
bcr_gear = 2
bcr_misc1 = 194
bcr_misc0 = 0
afc_gear = 4
afc_wait = 54
afc_gain = 32797
afc_limiter = 4100
afc_misc = 128
afc_zipoff = 0
adc_ctrl = 0
agc_control = 226
agc_window_size = 17
agc_rffpd_decay = 82
agc_ifpd_decay = 82
fsk4_gain1 = 0
fsk4_gain0 = 26
fsk4_th = 65535
fsk4_map = 0
ook_pdtc = 42
ook_blopk = 12
ook_cnt1 = 164
ook_misc = 2
raw_search = 214
raw_control = 131
raw_eye = 173
ant_div_mode = 1
ant_div_control = 128
rssi_thresh = 32
rssi_jump_thesh = 12
rssi_control = Container:
check_thresh_at_latch = 'ENABLE'
average = 'AVERAGE4'
latch = 'SYNC'
rssi_control2 = Container:
rssijmp_dwn = 'DISABLE'
rssijmp_up = 'DISABLE'
enrssijmp = 'DISABLE'
jmpdlylen = '2_Tb'
enjmprx = 'NO_RESET'
rssi_comp = 64
clkgen_band = 10
PREAMBLE PREAMBLE Struct('preamble_group_s') 0814 000f 3100 0000 0000 0000 0000
Container:
tx_length = 8
config_std_1 = Container:
skip_sync_to = 'DISABLE'
wut_r
= 20
config_nstd = Container:
rx_errors = 0
pattern_length = 0
config_std_2 = Container:
rx_preamble_timeout_extend = 0
rx_preamble_timeout = 15
config = Container:
pream_frist_1_or_0 = 'First_1'
length_config = 'BYTE'
man_const = 'NO_CON'
man_en = 'NO_MAN'
standard_pream = 'PRE_1010'
pattern = 0
postamble_config = Container:
postamble_enable = 'DISABLE'
pkt_valid_on_postamble = 'TRUE'
postamble_size = '_8_BITS'
postamble_pattern = 0
MATCH MATCH Struct('match_group_s') 0000 0000 0000 0000 0000 0000
Container:
match_field_s = [
Container:
value = 0
mask = 0
ctrl = 0
Container:
value = 0
mask = 0
ctrl = 0
Container:
value = 0
mask = 0
ctrl = 0
Container:
value = 0
mask = 0
ctrl = 0
]
FRR_CTL FRR_CTL Struct('frr_ctl_group_s') 0904 060a
CURRENT_STATE INT_PH_PEND INT_MODEM_PEND LATCHED_RSSI
(gdb)

gps: mm6a gps initilization doesn't look right.

mm6a: cire_working-0-g35beb4a-dirty

the following trace is after the GPS has been initialized. Note that it sends $PSRF the nmea initializtion twice. Should have already been at SirfBin 115200. Didn't power cycle.

Did go through a reset which will switch the pins over to input which could cause a power bounce. So this may be the way it is.

--- @135680      1      222  132     1  REBOOT   GOLD -> GOLD  [GOLD]  (3/1)
    REBOOT: PANIC    f: GOLD   c: GOLD   m: GOLD   reboots: 3/1   chk_fails: 0
    dt: 2017/12/26-(mon)-01:52:40 GMT  prev_sync: 0 (0x0000)  rev:      11

--- @135812      2      223  168     2  VERSION  GOLD  0.2.78  hw: mm6a/1
    VERSION: 0.2.78      hw model/rev: 1/1 (mm6a/1)  r/i: x(0/0)

--- @135980      3      223   40     4  EVENT  GPS_BOOT  0  0
    GPS_BOOT: (5) <0 0 0 0>  x(0 0 0 0)

--- @136020      4      224   40     4  EVENT  GPS_START  224  0
    GPS_START: (8) <224 0 0 0>  x(e0 0 0 0)

--- @136060      5     1453   44    32  GPS_RAW -- MID: 178 (b2) <tx> peek/poke

--- @136104      6     1507   52    32  GPS_RAW -- non-binary <tx>
    $PSRF100,0,115200,8,1,0*04

--- @136156      7     1588   44    32  GPS_RAW -- MID: 178 (b2) <tx> peek/poke

--- @136200      8     1642   52    32  GPS_RAW -- non-binary <tx>
    $PSRF100,0,115200,8,1,0*04

--- @136252      9     1694   44    32  GPS_RAW -- MID: 178 (b2) <tx> peek/poke

--- @136296     10     1700   40     4  EVENT  GPS_FIRST  1700  1476
    GPS_FIRST: (12) <1700 1476 0 0>  x(6a4 5c4 0 0)

gps readings should be time stamped.

Problem: one is searching for a tag and sees a GPS position. The age of the position is important. If the tag loses GPS sat lock but we can still talk to it we can see Ded Reckoning information. The question is when was the last good GPS position.

==> we really need to know when the good GPS position was reported.

Every datum entered into the Data Store (DBLK) is time stamped. We need a similar time stampage for the extracted GPS position across the net.

reboot reason on first power up set to 0 (NONE), probably should be a CLOBBER.

mm6a: 0.2.106, cire_working-0-g642621d-dirty

--- offset  recnum  systime  len  type  name
--- @512         1      180  132     1  REBOOT   unset -> GOLD  [GOLD]  (1/0)
    REBOOT: NONE     f: unset  c: GOLD   m: GOLD   reboots: 1/0   chk_fails: 0
    dt: 2017/12/26-(mon)-01:52:40 GMT  prev_sync: 0 (0x0000)  rev:      11

    majik:   dedf00ef  sigs:    fabafaba    fabafaba  fabafaba
    base:  f ffffffff  cur:     00000000
    rpt:     00000000  reset:   00000001      others: 00000000
    fault/g: 00000000  fault/n: 00000000  ss/disable: 00000000
    reboots:    1  fails:    0  strg:        0  loc:    0
    uptime:        0  elapsed:        0
    rbt_reason:    0  ow_req:  0  mode:  0  act:   1
    vec_chk_fail:  0  image_chk_fail:    0

Panic: change semantics of block_sector (next block to write).

Problem: how to clear the panic_blocks that have been read OTA.... How to tell which panic_blocks are valid. [if we use the panic_sig that means one has to write each panic_block to clear it. bad bad bad]

currently block_sector points at next absolute sector to write for the next panic block. (ie starting block of the panic_block). And gets set to 0 when full.

we want to change this so block_sector points just past the last panic_block written. ie. It says how many blocks are valid.

when full we will set block_sector to high limit + 1. this indicates full.

When clearing panic_blocks we simply set block_sector back to dir+1 (first panic_block).

PANIC/REBOOT improvements

  • want to see why we rebooted. if panic need more information about which panic.
  • fix uptime. gets zero'd on boot but should get zero'd after collected for DBLK reboot.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.