免费注册 查看新帖 |

Chinaunix

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

[操作系统] 我有一块ARM板,怎么在上面一步一步跑起Linux [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-11 10:37 |只看该作者 |倒序浏览
写过Linux应用,对系统移植一片空白,希望大神指点几句,好有个方向。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-08-11 11:14 |只看该作者
板子上用的那家的SOC?

论坛徽章:
0
3 [报告]
发表于 2014-08-11 17:10 |只看该作者
和那一家的有关系吗?为什么会相关?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2014-08-11 23:50 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-08-12 00:06 编辑

回复 3# captainliuy


连用的哪家的芯片都不知道,你怎么配置kernel??   你怎么知道该选哪个arch/arm/mach-xxx??      你怎么知道该选那些驱动??

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2015-02-04 12:00:07羊年新春福章
日期:2015-02-04 11:57:56双子座
日期:2014-12-02 11:44:59金牛座
日期:2014-10-08 16:47:08狮子座
日期:2014-08-29 13:37:46巳蛇
日期:2014-08-26 17:32:29NBA常规赛纪念章
日期:2015-05-04 22:32:03
5 [报告]
发表于 2014-08-12 10:09 |只看该作者
建议楼主先去网上看看嵌入式的一些入门基础吧

论坛徽章:
0
6 [报告]
发表于 2014-08-12 16:08 |只看该作者
回复 4# arm-linux-gcc


    谢谢关注啊。那第一步是要知道这块板的硬件信息,包括ARM版本,内存布局,时钟设置,外设地址,然后修改arch/arm/mach-xxx文件吗?

论坛徽章:
0
7 [报告]
发表于 2014-08-12 16:16 |只看该作者
回复 4# arm-linux-gcc

我在一块X86的工控板上做过Linux开发,系统直接使用Tiny Core Linux,根本不用移植,修改写配置就可以用了。ARM上没有类似的东西是因为开发ARM SOC的厂家太多,所以不能统一的原因吗?
我对硬件还算熟悉,移植的第一步应该是把系统的硬件信息传递给内核代码,这样理解对吧,问题是怎么传递,要做哪些?
   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
8 [报告]
发表于 2014-08-12 19:02 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-08-12 19:02 编辑

x86不用修改能直接使用,是因为总线是用的PCIE
PCIE总线上的各种设备的地址和中断号都是上电后动态枚举的,PCIE设备的驱动直接读取PCI BAR就能够知道自己的地址和中断号

而ARM使用的amba总线(包括AXI  AHB  APB),总线上的设备的地址和中断号在设计芯片时就定死了,amba总线没有枚举功能,所以驱动中的地址和中断号都是写死的(一般是写在arch/arm/mach-xxx下的某个.c文件里面),即使是同一个IP,在不同的SOC上地址多半也是不一样的,这样就需要根据不同的SOC来选择不同的arch/arm/mach-xxx目录,因此你必须知道你用的是哪家芯片,然后在menuconfig里面选上对应的选项


内存布局,时钟设备,片内外设地址,这些一般都不用改,这些都是芯片厂家提供好了,一定有某一个arch/arm/mach-xxx目录是对应你的这个芯片的
如果你自己外接的设备,虽然内核源码中已经有了驱动,但是你需要根据你的硬件的地址和中断号(硬件电路连线决定的)来添加相应的代码,以便驱动能够对正确的地址进行操作。



论坛徽章:
0
9 [报告]
发表于 2014-08-13 11:10 |只看该作者
回复 8# arm-linux-gcc


    就是说要修改对应的文件,这些文件由厂商提交。那最近Linux 3.x新出的Device Tree的又是怎么回事呢,好像就是一种给内核传递SoC信息的方式吧。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
10 [报告]
发表于 2014-08-13 12:42 |只看该作者
2.x的内核中的platform_device是在arch/arm/mach-xxx中写死的

3.x的dts就是把以前写死在arch/arm/mach-xxx中的platform_device搬到一个脚本中了,这个脚本会被编译成dtb文件,内核会解析dtb文件,然后自动产生platform_device


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP