发新帖我要提问
12
返回列表
打印

linux下像51一样编程序的一个例子(像用51一样用linux,甚至比51

[复制链接]
楼主: wangkj
手机看帖
扫描二维码
随时随地手机跟帖
21
wangkj|  楼主 | 2007-8-5 01:40 | 只看该作者 回帖奖励 |倒序浏览

是discuz,不知道怎么改

使用特权

评论回复
22
newstary| | 2007-8-8 09:10 | 只看该作者

精髓部分

这两行代码非常重要,其实能把这些理解了也就和51没啥差别了,个人愚见
//打开内存空间
if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1){
     DEBUGMSG(DEBUG_ERR, "gpio: Error opening /dev/mem ");
     exit(-1);
        }
        //map 0xffff
//获得AT91_SYS的虚拟地址
map_base      = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, AT91_SYS);//AT91_SYS = 0xffff f000

使用特权

评论回复
23
wangkj|  楼主 | 2007-8-8 10:06 | 只看该作者

楼上正解!一点没错。

mmap是最关键的函数!是物理地址到虚拟地址映射函数,这样,操作这块虚拟地址就是直接操作的你需要的物理地址。
在linux中,是不允许直接控制物理地址的,通过这种方式,实现了物理地址的操作。
这样,控制各种寄存器和IO就和51的裸奔没区别了,而且还能用到linux的所有的功能!

使用特权

评论回复
24
newstary| | 2007-8-8 11:07 | 只看该作者

再顶楼主个

楼主提供了一条不错思路,如果不需要调用中断处理仅是简单I/O操作的话确实免去了调驱动的麻烦,英明神五,^_^

使用特权

评论回复
25
zlg_arm| | 2007-8-8 13:04 | 只看该作者

不是一个好的开始

既然都是这么做,为什么还要linux,内存保护的机制等等都可以丢弃了,感觉思路是创新,但是方法对于正统的开发不宜提倡!,小系统可以,但是如果直接操作寄存器地址,移植性能将大大降低!

使用特权

评论回复
26
wangkj|  楼主 | 2007-8-8 13:32 | 只看该作者

没有啥好不好,只有最适合的

我这个方法使用于单进程,单用户的嵌入系统。
例如税控机等专用设备,对服务器绝对不能这么干。
适合对硬件了解多,对linux了解少的开发人员。
也适合于硬件经常调整,例如键盘,lcd等设备的驱动。
而且,内核升级,不需要改驱动!
我的内核有1年没改写了,虽然硬件改动了很多版本!
如果公司的linux高手多,无所谓了。
不过,有几个linux高手?公司得开多少钱?
能到这个程度的linux的员工开销至少是两个硬件人员的开销。
还不一定找得到!
内存保护对驱动程序无效!所以这种方法如果写错了,
和驱动写错了一样,系统很可能崩溃!
所以还是那句话,只有最合适的,没有最好的。

特别声明:我这个方法不存在好不好的问题,只是适合了一类应用。
另外,传统的驱动的方法也能达到同样的硬件控制的目的。
各取所需而已。

还有,用中断也可以用这种方法,不过需要信号机制的配合。
优点:用户不需要了解内核,直接写控制过程,内核和应用程序的清晰划分。
缺点:响应时间大约10ms,内核直接中断仅仅10us.
使用场合:非实时系统。例如掉电保护,这个过程有超过5S的时间余量。
另外就是键盘扫描,换键盘,换应用程序,而不需要更换内核驱动。
10ms对键盘最够了。
这个更复杂,如果感兴趣的多,再写出来。

使用特权

评论回复
27
zlg_arm| | 2007-8-8 15:36 | 只看该作者

看来楼上的是个应用高手阿

感兴趣!很感兴趣,写出来分享一下吧~谢谢了

使用特权

评论回复
28
zlg_arm| | 2007-8-8 15:40 | 只看该作者

没有啥好不好,只有最适合的

没有啥好不好,只有最适合的!
很好的见解,这个观点更适合技术创新!
搂主做什么的?干了多久了?因为你在其他帖子里面说我崇拜zlg好像很有藐视的情绪阿。有点不理解,可否指点一下

使用特权

评论回复
29
wangkj|  楼主 | 2007-8-8 15:54 | 只看该作者

俺没有藐视zlg的意思

其定位就是低端用户。目前正在试图向高端转移。但是,进展并不顺利。
他给中国的电子初学者带来了很大的帮助,但是到一定水平后,
就应该脱离其影响。因为这个公司基本上更多的算一个贸易公司。
赚钱第一,兼顾教育。教育也是其赚钱的手段之一。
所以,zlg是一个正常的中小公司,没有什么可以神话的地方。

另外,我作的这个小程序,虽然我想很多人觉得有点不明白,其实,在linux高手眼里,不值一提。这世界的高手太多了。我们这些人,
仅仅是IT民工而已。只不过,有大工小公的区别。老板也仅仅是工头。
真正的老板是不懈看我们这些技术板块的。人家看啥?好好想吧。

使用特权

评论回复
30
zlg_arm| | 2007-8-8 16:35 | 只看该作者

有你的解释,我就感觉少了很多误解

话讲明白了,让我感觉明白了许多,谢谢!
商业利益大家都是需要的,中小公司都是生存为第一的,想赚钱,多赚钱那是没有什么可耻的。zlg的公司算是开了一个头,希望也有越来越多的像zlg这样的公司存在和发展,就算都是销售公司起码也能让大陆可以和台湾的贸易公司一起竞争了!等他能做到中兴这么大的时候,我想考虑的东西也会不一样了,非我这种人可以妄加揣测的。

使用特权

评论回复
31
wangkj|  楼主 | 2007-8-8 16:47 | 只看该作者

没有必要妄自菲薄

zlg是一个团队,只要你不断努力,到zlg现在这个年龄,没准,你能把zlg给收购了
:)

bill不是收了dec吗?DEC可是BILL少年时学习的榜样啊,世事难料

使用特权

评论回复
32
zlg_arm| | 2007-8-8 16:52 | 只看该作者

那天有能力,我会这么做的,但是那时候我可能也不要zlg了

那天有能力,我会这么做的,但是那时候我可能也不要zlg了

http://amd.9966.org/  你的这个网站web不能上
telnet可以连接,但是有没有可以使用的用户名和密码啊?只有root用户名存在,但我想这不可能是留给我们用的吧

使用特权

评论回复
33
wangkj|  楼主 | 2007-8-8 17:00 | 只看该作者

先别上

我正在编译mldonkey,这个变态的程序需要128M 内存才能编译!我把其他的服务都听了。以后有机会弄一个大内存高主频的arm.我的这个9200干这个太累了,就像要8086跑winxp一样。

使用特权

评论回复
34
wangkj|  楼主 | 2007-8-8 18:38 | 只看该作者

最好还是注册吧

我好怕政府管制啊,有了问题说不清

使用特权

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

本版积分规则