LPC1100 Senondary Bootloader via UART Xmodem
上回測試這個AN,是因為工作上關係,需要寫一段透過I2C更新LPC1114上的Flash內的code.所以就先測試這份AN.
研究一下發現有幾個訣竅,掌握住應該不難完成.
1. Interface的處理,我會啟動Hardware I2C salve,採用interrupt處理(也可以用polling方式).
- 所以我會利用一套LPC1343 ( Host and I2C Master ) + LPC1114 ( Client and I2C Slave).
- 這個要設計一下state machine 與 command .
- LPC1343中建table,將Application compile 得到bin file之後,轉成c source code.
更新2013/1/10 NXP也有AN介紹 an11258-i2c-secondary-boot-loader
版大您好,
回覆刪除請問您有LPC1114的i2c的sample code嗎?我有個疑問關於i2c寫EEPROM,因為只呼叫i2cEngine();就可以直接寫資料,似乎怪怪的
Lin 您也好,(我也是Lin)
回覆刪除在呼叫 I2CEngine(); 之前需要先準備一些資料.從example code中的i2c project可看到. 如果是要master write,至少還要先 寫入資料到 I2CMasterBuffer[]中
舉例eeprom 若 address為 0xa0
寫入位址為 0x0020 ,將寫入資料為0x79,0x97.則以下你要這樣做:
1.
I2CMasterBuffer[0] = 0xa0;
I2CMasterBuffer[1] = 0x00;
I2CMasterBuffer[2] = 0x20;
I2CMasterBuffer[3] = 0x79;
I2CMasterBuffer[4] = 0x97;
2.
I2CWriteLength = 5; //上填入 I2CMasterBuffer的bytes數量.
I2CReadLength = 0;
3.接著就可以呼叫 I2CEngine();
真的做事的那段function會是在 i2c.c 中的 I2C_IRQHandler .由硬體家中斷處理.
~MCU diy~
Okay,感謝板大,我去try try看
回覆刪除Lin ,
回覆刪除用力踹踹看吧..
若有問題再來討論
~MCU diy~
Lin 大,
回覆刪除請問您的I2C Bootloader code size 多大呢?
會超過4kB 嗎?
謝謝您.
記得是沒超過
刪除謝謝Lin大大的回覆.
回覆刪除後來發現是使用到不同的redlib 讓code size 變大.
需再請問您.
有沒有用過 second bootloader 載入內含 rtos 的 code 過.
我用 second bootloader 載入 timer 的 blinky code 可以跑的起來. 但載入 rtos 的 blinky code 卻跑不起來..
感謝. ^_^
Kevin 敬上
Hi Kevin,
刪除我猜rtos blindly project內的設定可以參考能成功的那project看看flash的設定。