[心得] S3C2410 Bootloader
附檔是一份我自己寫的 bootloader
用 SBC-2410x 這片版子開發的
如果你用 Samsung S3C2410 這顆 ARM9, 開機的流程應該是大同小異
bootloader 主要有下面的特徵...
* Easy to read (自己重新刻過, 起碼我自己覺得還滿好讀的 XD)
* NAND Flash support (Samsumg K9F1208)
* MMU support
我自己寫了一個 HAL (Hardware Abstraction Layer)
裡面有以下的 driver, 放在 src/HAL 底下
* Ring buffer driver
* UART driver (depends on ring buffer)
* ISR module
* Timer module
* LED module
* USB module
我也把 uC/OS II 移植進去, src/ucos2/底下有相關的檔案...
* os/ 從 Micrium 網站下載回來的 source code
* ARM/ 移植到 ARM 相關的檔案
* Driver/ 在 ucos2 裡的 device driver
包括 ring buffer 和 UART, 這部分其實和 HAL 的類似
* App/ 包括一個 RS232 使用的 shell, 提供以下功能...
Support command of Q_Q shell:
help Show this help
irq Show IRQ status, incluing IRQ name, # of ISR
r1 Read 1-byte from memory
r2 Read 2-byte from memory
r4 Read 4-byte from memory
uart UART related operation
w1 Write 1-byte to memory
w2 Write 2-byte to memory
w4 Write 4-byte to memory
還有一個 USB-shell, 提供以下功能, 主要是拿來讀寫Flash
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
我用的 JTAG 是 J-Link, 我利用 J-Link 可以 load binary 到 ARM 的特性
寫了一個 Flash Writer, 放在 Flash_Writer/ 底下
* src/Flash_Writter/ ARM程式, 把 RAM 的資料寫到FLASH
* src/Flash_Writter_VC++/ 產生 script 給 J-Link, 初始化燒錄環境
這個 project 很大一部份是練習寫 USB 相關的程式, 相關的檔案如下...
* USB/dist LibUSB32 相關的安裝檔
* USB/driver/ 我用 LibUSB32 為我的版子產生的 driver
* USB/Win32 App/usb_shell 和 ARM 的 USB module 溝通的程式
----
感謝網路上很多朋友的分享, 我才能寫出這些程式
把相關的 source code 分享出來, 給需要的人使用
如果你也正在研究bootloader, 希望這份資料幫得上忙
Lihgong Wu
----
http://qqmou.mail.googlepages.com/ARM_bootloader.rar
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.89.27
推
12/27 23:13, , 1F
12/27 23:13, 1F
推
08/05 11:54, , 2F
08/05 11:54, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 6 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章