作者weii (迷惑失道)
看板SFFamily
标题[转录][心得] S3C2410 Bootloader
时间Sun Feb 1 23:22:16 2009
※ [本文转录自 LinuxDev 看板]
作者: lihgong (当宪兵是我一辈子的耻辱) 看板: LinuxDev
标题: [心得] S3C2410 Bootloader
时间: Sat Dec 27 20:09:25 2008
附档是一份我自己写的 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
1F:推 po953:头推 12/27 21:20
2F:推 rz600000:感恩..谢谢好人 12/27 23:18
3F:→ TroyLee:推 12/27 23:42
4F:推 TroyLee:有个小问题...原po不觉得 Keil C 的编辑器是无敌难用的吗 12/28 03:52
5F:→ lihgong:所以我都用 notepad++ :D 12/28 11:04
6F:推 TroyLee:刚设定完 PLL 不需要等他 Lock 住吗? 12/28 12:27
7F:推 ykjiang:Keil C 的 Editor 不难用吧,最少比 BCB editor 好用 12/28 14:09
8F:→ lihgong:PLL 的部分, 我是参考其他人的写法. Data Sheet 有提到 12/28 14:32
9F:→ lihgong:当PLL的设定下去以後, 晶片内部会自动等待PLL稳定 12/28 14:32
10F:→ lihgong:再把clock输出. 等待期间, 没有clock输出 12/28 14:33
11F:推 TroyLee:我的 Keil C 会mis-alignment.. 12/28 15:44
12F:→ TroyLee:i see... 可能我用的不同颗 XD .. 我是 STR9 12/28 15:46
13F:推 kalowt:我是用长高的ST-2410V3.0 12/29 22:28
14F:推 milochen:Q_Q shell ... XDDD 01/01 11:48
15F:推 ykjiang:只要不用斜体字及粗体字,uVision的游标对齐就不会出错了 01/30 14:08
--
三月的柳絮不飞 你的心如小小的寂寞的城
我达达的马蹄是美丽的错误 我不是归人 我是马~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.201.167