打印

arm和linux

[复制链接]
1898|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
phonelong|  楼主 | 2012-7-9 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
okyouwin| | 2012-7-9 15:36 | 只看该作者
坐等高手。

使用特权

评论回复
板凳
joyme| | 2012-7-9 16:56 | 只看该作者
Linux的裁剪和移植
裁剪是去掉一些不需要的模块让系统更适合嵌入式产品上使用
移植就是让其能在特定的硬件平台上跑并能驱动不同的外设
建议LZ找移植(网上很多)的资料看看,熟练了之后就可以自己将新的硬件平台加进去了

使用特权

评论回复
地板
john_lee| | 2012-7-10 03:17 | 只看该作者
CPU访问设备,就是读写硬件设备的特殊功能寄存器(SFR)和/或某些设备内部的存储器。
访问的方式有两种:
1、存储器映像,SFR 与存储器统一编址,CPU 可以使用普通的存储访问指令访问 SFR。
2、端口映像,SFR 与存储器独立编址,CPU 需要使用特殊的端口访问指令访问 SFR。
存储器映像方式是任何 CPU 都可以支持的,但端口映像方式却需要 CPU 具有相应访问指令才能支持。
arm 没有端口指令,只能使用存储器映像方式。
而 x86 就有端口访问指令(in 和 out),可以支持存储器映像和端口映像。

使用特权

评论回复
5
shell.albert| | 2012-7-10 08:43 | 只看该作者
是因为驱动程序的作用!
应用程序访问硬件是通过驱动程序,应用程序运行在用户态,通过read,write,ioctl设备文件即是/dev/devicename,调用相应的驱动程序。具体怎么访问硬件就在驱动程序中了。驱动程序中一般会调用操作系统底层封装好的函数,将物理地址映射到虚拟地址,这样你访问虚拟地址其实就是真实的硬件地址。通过读写这个地址,就能访问到硬件的寄存器。跟基本的51单片机扩展RAM、Flash等芯片访问是一样的。只不过在51中,你是直接访问P0,P1等端口寄存器,而在linux中你就是调用底层函数而已。

使用特权

评论回复
6
phonelong|  楼主 | 2012-7-10 09:54 | 只看该作者
5# shell.albert 驱动程序中一般会调用操作系统底层封装好的函数,将物理地址映射到虚拟地址,这样你访问虚拟地址其实就是真实的硬件地址。

请问在linux移植过程中,系统底层封装好的函数怎么写,还有不同的arm它的寄存器物理地址是不一样的,怎么去映射?这些工作都要自己写吗?没有官方的头文件直接可以拿来用吗?
这些很复杂,有没有一个简单易懂的教程给俺看看!
谢了!

使用特权

评论回复
7
flyriz| | 2012-7-11 10:05 | 只看该作者
参考一下我的一篇**:http://blog.chinaunix.net/uid-25669276-id-3265416.html
讲的就是对引脚的配置。

使用特权

评论回复
8
电子学习员| | 2012-7-28 10:35 | 只看该作者
同意五楼

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

29

帖子

1

粉丝