免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ljpdxj
打印 上一主题 下一主题

[BootLoader] 关于一个需求,请各位大牛指导,感激涕零~ [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-02-06 11:42 |只看该作者
回复 10# ant艾草
感谢你的回复!
1、目前不一样,但是要修改成只使用一份;
2、算是一个难点,需求是那样,必须仔细谨慎完成;
3、这部分size只是粗略估计,也许使用256K,也许可以使用192K,或者128K。。。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
12 [报告]
发表于 2012-02-06 11:50 |只看该作者
本帖最后由 linuxfellow 于 2012-02-06 12:07 编辑

回复 1# ljpdxj
其实应该划分好bootloader和kernel功能范围
应该压缩bootloader的driver,尽量少,boot只管kernel升级,重写flash,启动kernel就行;OTG升级放到kernel
两部分功能不重叠,这样也可以达到你的要求

论坛徽章:
0
13 [报告]
发表于 2012-02-06 12:06 |只看该作者
回复 12# linuxfellow

感谢你的回复!
这个我只能尽量建议这样做:bootloader只提供最基本的升级功能,比如UART
但几乎应该不会被leader接受

论坛徽章:
0
14 [报告]
发表于 2012-02-06 12:07 |只看该作者
你的那些dirver,对于bootloader和kernel来说,只是调用一系列的函数。
把这些函数的地址全部放到一个结构体里
然后把结构体地址告诉bootloader和kernel,他们通过这个结构体来访问driver的所有功能

你的bootloader和kernel是在同一个单一的物理地址空间里的,只要知道地址,函数互相调用都没问题

论坛徽章:
0
15 [报告]
发表于 2012-02-06 12:15 |只看该作者
本帖最后由 ljpdxj 于 2012-02-06 12:16 编辑

回复 14# senioryzc
感谢回复,算是一个技巧,必须还要用一个做法就是这部分common module的VMA要设置为相同。
这样做存在Sync的问题,
某一时刻升级过主系统,且主系统这边把common module的API原型变了、或者函数原型不变但是修改过部分内容,重新compile过,在bootloader看到的function pointer指向的地址其实已经不对了。。。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
16 [报告]
发表于 2012-02-06 12:21 |只看该作者
本帖最后由 linuxfellow 于 2012-02-06 12:40 编辑

还是做领导好,提这么个要求,功劳就有了;下面的人的拍多少天脑袋。
其实只要他说的功能有了, 减少flash大小的要求也能满足, 他不应该在乎是在boot里完成, 还是由kernel完成。对于终端用户来说, 他们不知道由哪部分完成;他们也不会关心这些细节。 bootloader本身的目的就是为升级kernel,  启动kernel。不应该再做其他事情。剩下由kernel或app完成。
让bootloader做太多的事情,不是什么好主意。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
17 [报告]
发表于 2012-02-06 12:33 |只看该作者
本帖最后由 linuxfellow 于 2012-02-06 12:37 编辑
ljpdxj 发表于 2012-02-06 12:15
回复 14# senioryzc
感谢回复,算是一个技巧,必须还要用一个做法就是这部分common module的VMA要设置为相 ...

kernel有一个fixedmap area, 你可以把这些公用函授静态的map到那里去。那里地址固定; 只要每次升级时不改变这些静态地址,就没问题。

论坛徽章:
0
18 [报告]
发表于 2012-02-06 13:06 |只看该作者
回复 17# linuxfellow


    Not Linux but eCos。。。

论坛徽章:
0
19 [报告]
发表于 2012-02-06 13:08 |只看该作者
回复 16# linuxfellow


    表示赞同,但bootloader已经做成了这个样子,它已经相当于一个小的电视系统了,有OSD,有PSI/SI的解析。。。

论坛徽章:
0
20 [报告]
发表于 2012-02-06 13:17 |只看该作者
回复 9# ljpdxj


    个人觉得你这种需求终极的解决方案就是让BOOT和KERNEL合成在一起,一起编译,把所有的共同代码合并,不过这样难度应该颇大
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP