文章總列表

Embedded System Studying note 12/18

搞定 USB 的 Flash utility
可以在 PC 和之間做資料傳遞, 以及提供 Flash Utility
再稍微加工一下, 就能方便的下載 firmware 了

r1 Read 1-byte from ARM memory
r2 Read 2-byte from ARM memory
r4 Read 4-byte from ARM memory
rr Read a range of memory from ARM
w1 Write 1-byte to ARM memory
w2 Write 2-byte to ARM memory
w4 Write 4-byte to ARM memory
wr Write file to ARM memory
flash_erase Erase one block of flash
flash_read Read blocks of flash to file
flash_write Write file to flash
help Show this help



----


處理掉一些滿難搞的 bug...


C 在執行時, 要把 program code 要從 Flash 載入到記憶體

程式越寫越大, 忘記把載入的區塊放大
難怪程式執行起來很不正常

在進入 C environment 之前, 要先把 BSS section 清成 0...

BSS section放些未給初值的 global variable
這些變數預設要清成 0

我在呼叫 clear_bss_section() 清光這些資料前
就跑去執行其他初始化, 難怪 ARM 會跑到奇怪的地方
或是抓到奇怪的指令

對自己寫的 code 太鐵齒, 以為保證不會錯, 用了這種結構...

while(put_string(str) == -1);

put_string() 就是有可能一直失敗, 每次都回傳 -1
然後程式就卡死了

同樣, 如果有用 semaphore/ queue/ mailbox 這類的同步機制
需要等別人給資料時, 不要鐵齒, 把 waiting time 設無限大, 以為事件一定會來
就是有可能, 事件永遠都不來 !!!!

給個 timeout 吧, 讓程式有一條路可以自己解開自己

好比人生, 何必一直痴痴的等?
設個停損點, 到了就砍單, 可惜做起來沒說得容易 :p


----


Todo

1. 研究 FAT system
2. 研究 SD Card protocol

留言

這個網誌中的熱門文章

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

幼犬書桌椅選擇心得 升降桌 兒童桌椅

CANON G3000 廢墨瓶改裝