g-bios开发日志(不断更新中)
本帖最后由 conke 于 2010-03-03 10:47 编辑
第一贴先说一下刚刚完成的几件事:
1、初步支持Samsung S3C6410。
已完成:Clock, DDR, UART, NAND (ECC disabled), 等
TODO: 中断、DM9000、WI-FI、MMC/SD等
GTH (g-bios top-half) for S3C6410已完全支持,GBH(g-bios bottom-half)已正常能启动。
这部分工作耗去了我们近一周的时间。目前嵌入式行业技术革新非常快,三星S3C6410和S3C2440简直是天壤之别,对比S3C6410,大家都说S3C2440太简单了
2、初步支持Marvell PXA910/PXA168
已完成Clock, DDR, UART等,GTH已能工作,GBH正在开发中
一旦开发完成,大家可以把g-bios TH + BH和Marvell官方的OBM + u-boot对比下
3、tftp默认文件名
只要在g-bios提示符下输入"tftp"四个字母即可,程序会智能猜测你所要下载的文件
4、加入ymodem协议
g-bios已支持两种常用串口文件传输协议:kermit和ymodem。实测速率如下:
-------------------------------------------
| windows | linux
-----------|---------------|---------------
kermit | 1.8K | 5K
ymodem | 10K | 10K
--------------------------------------------
(表中数据为近似值,不同的系统可能会有10%左右的差异)
5、为reboot()函数定义了一个宏:DECLARE_REBOOT(func),用于封装gcc的weak扩展,便于移植。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
PXA168(Marvell的新平台)上ymodem测试通过,方便了后继调试,Marvell并口仿真器速度太慢了,而且很不稳定
正在初化始NAND,希望中午之前能读到ID。现在回去睡一觉
NAND现在能读了不?
NAND read/program/erase已支持,今天就可以试着用刚开发的g-bios一下标准Linux。
Marvell对Linux的支持似乎不是很好,至少标准Linux内核中支持得不全,Marvell得加油了
刚才测了下linux kernel,报错:processor id不对。
processor_lookup()函数没找到匹配的CPU型号,在相应的proc-xxx.S中添加一个即可。
Feb 17, 2010 (大年初四)
1. lds
合并各个不同soc的lds,TH和BH各仅使用一个通用的lds:即g-bios-th.lds和g-bios-bh.lds
2. ymodem
a) 设计一个通用性的load_opt类作为ymodem_load()的参数,便于向前兼容
b) 支持part_write(),不是把数据全部load到RAM后再一次性写到storage(flash/sd等),解决了大文件load问题(测试了34M的WinCE image,load成功!约半小时)
c) 同时也支持指定RAM load地址
d) 缺CRC校验
3. NAND
a) 改写nand subsystem中的核心函数nand_ctrl_register(),新添加两个API:nand_probe()和nand_register(),更好的兼容PXA168底层驱动,而且支持更多扩展(这一点在Linux内核中已基本实现)
b) S3C2440 H/W ECC support
c) nand_ctrl类新增两个成员:NAND command和address寄存器地址:cmmd_reg和addr_reg,用于实现默认的cmd_ctrl()函数,即cmd_ctrl()不再是纯虚函数,从而进一步简化了NAND LLD驱动开发
d) TH和BH中的NAND subsystem还未兼容,虽不影响g-bios的移植,但还是想抽空改掉
e) part_wite()不足一个page部分以0xFF填充
4. interrupt
这部分改动很大,也非常用有意义,今天只做了一部分
引入条件编译CONFIG_IRQ_SUPPORT,决定是否支持interrupt还是仅使用polling mode(目前u-boot只支持polling mode),这个功能在开发初期及调试时很有用。
在bootloader开发初期,仅使用polling也可实现大部分功能,而为开发人员降低了移植难度,加快了移植/开发进度。
后期再enable CONFIG_IRQ_SUPPORT,实现全功能的USB, TCP/IP!
这方面只今天只做了架构性的改动,明天再和小平一起改具体的设备子系统、、、
闷头做时没感觉,回顾时才发现原来今天和小平一起做了不少东西
好了,列一个明天(应该说是今天)的具体目标:
1. interrupt/polling
更改net子系统及CS8900/DM9000/AT91SAM9263 EMAC等Ethnet驱动,以同时支持IRQ和polling mode!
最好顺便实现MII子系统。voidjack,你的patch呢?
2. NAND
PXA168 H/W ECC support
用GBH烧录的NTIM和GTH还起不来,估计十有八九是ECC的问题
3. SD/MMC
这部分就看Fleya的了
4. USB
Tiger正在研究,今天有很大进展
本帖最后由 voidjackjiang 于 2010-02-19 11:36 编辑
我原先对MII子系统的设计是这样的,即各种PHY的前16个寄存器基本都是一样的,我把这部分操作写在core层,不同的soc上的网卡访问PHY时只要把访问寄存器的方法作为参数传给MII层就ok了,获取PHY的各个参数只要调用MII层的函数就可以,这些代码我在9261和9263的板子上都测试过,设计可能有很多不合理的地方,大家可以参考一下,具体说明和patch在http://linux.chinaunix.net/bbs/thread-1144313-1-2.html,不过由于这个代码是去年11月份写的,一直没有提交,我把当时完整的g-bios代码做为附件再发一次。MII层是在device/net/mii_core.c里实现的。(现在好像发贴不能加附件了么?)
jack,你当时的patch没有及时upstream是我的错,挪用小平的经典名言——“我有罪!”
MII core还需要开发出更多的API,如mii_reset_phy()等