免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9437 | 回复: 17
打印 上一主题 下一主题

g-bios开发日志(不断更新中) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-10 15:46 |只看该作者 |倒序浏览
本帖最后由 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扩展,便于移植。

论坛徽章:
0
2 [报告]
发表于 2010-02-12 02:20 |只看该作者
PXA168(Marvell的新平台)上ymodem测试通过,方便了后继调试,Marvell并口仿真器速度太慢了,而且很不稳定

正在初化始NAND,希望中午之前能读到ID。现在回去睡一觉

论坛徽章:
0
3 [报告]
发表于 2010-02-14 17:24 |只看该作者
NAND现在能读了不?

论坛徽章:
0
4 [报告]
发表于 2010-02-15 17:34 |只看该作者
NAND read/program/erase已支持,今天就可以试着用刚开发的g-bios一下标准Linux。
Marvell对Linux的支持似乎不是很好,至少标准Linux内核中支持得不全,Marvell得加油了

论坛徽章:
0
5 [报告]
发表于 2010-02-16 01:51 |只看该作者
刚才测了下linux kernel,报错:processor id不对。
processor_lookup()函数没找到匹配的CPU型号,在相应的proc-xxx.S中添加一个即可。

论坛徽章:
0
6 [报告]
发表于 2010-02-18 02:37 |只看该作者
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填充

论坛徽章:
0
7 [报告]
发表于 2010-02-18 02:52 |只看该作者
4. interrupt
这部分改动很大,也非常用有意义,今天只做了一部分
引入条件编译CONFIG_IRQ_SUPPORT,决定是否支持interrupt还是仅使用polling mode(目前u-boot只支持polling mode),这个功能在开发初期及调试时很有用。
在bootloader开发初期,仅使用polling也可实现大部分功能,而为开发人员降低了移植难度,加快了移植/开发进度。
后期再enable CONFIG_IRQ_SUPPORT,实现全功能的USB, TCP/IP!

这方面只今天只做了架构性的改动,明天再和小平一起改具体的设备子系统、、、

论坛徽章:
0
8 [报告]
发表于 2010-02-18 03:12 |只看该作者
闷头做时没感觉,回顾时才发现原来今天和小平一起做了不少东西

好了,列一个明天(应该说是今天)的具体目标:
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正在研究,今天有很大进展

论坛徽章:
0
9 [报告]
发表于 2010-02-19 10:41 |只看该作者
本帖最后由 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里实现的。(现在好像发贴不能加附件了么?)

论坛徽章:
0
10 [报告]
发表于 2010-02-20 23:38 |只看该作者
jack,你当时的patch没有及时upstream是我的错,挪用小平的经典名言——“我有罪!”
MII core还需要开发出更多的API,如mii_reset_phy()等
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP