打印

哎哟!求高人指路

[复制链接]
1661|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
啥是arm|  楼主 | 2013-3-23 21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我以前学单片机 现在转学arm 从裸机现在写到了bootloader了 但是写bootloader的时候感觉前面裸机学的好差,又回头重新学习裸机。现在不知道学啥,因为我看的是韦东山的视频教程,感觉讲的好浅显,后面的例子也是,但是也难怪,难了也看不懂。就拿中断管理来说吧,书后面就一个例子,很快就看懂了,然后 程序写下了,烧进开发板,一切正常,那么我就可以进入下一章的学习了吗?想提高一下,不知道做什么。请高人透露透露你们学习的时候的方法,感谢你们了!还有就是学习arm一定是顺其自然就得学操作系统吗?操作系统难吗?

相关帖子

沙发
啥是arm|  楼主 | 2013-3-23 22:19 | 只看该作者
一直在写这么简单的裸机程序 貌似内核里面有这些驱动是吧

使用特权

评论回复
板凳
啥是arm|  楼主 | 2013-3-23 22:34 | 只看该作者
还有什么做项目的  我做到什么程度可以做呀 我现在在实验室 但是我周围就我学arm

使用特权

评论回复
地板
dong_abc| | 2013-3-23 23:05 | 只看该作者
把裸机程序 填充到驱动框架里边就是驱动程序了哦,所以裸机还是练一下比较好。 有单片机基础,完全可以跳过裸机直接学习驱动模型的。

使用特权

评论回复
5
lr2131| | 2013-3-24 09:49 | 只看该作者
想回答你的问题,但是感觉很纠结。不知道怎么说好,以下是个人观点:
既然还是在学校,那我还是不要建议工程项目方式的学习吧。
在学校,深度方面是比较难兼顾到的,如果没有好的老师来引导。
所以,建议可以适当的注意一下广度。其实,这个是不矛盾的,学过一些类似的东西,经验是可以迁移的,

使用特权

评论回复
6
dushuaihu| | 2013-3-24 10:07 | 只看该作者
用什么学什么,这才是王道。

使用特权

评论回复
7
啥是arm|  楼主 | 2013-3-24 10:44 | 只看该作者
dushuaihu 发表于 2013-3-24 10:07
用什么学什么,这才是王道。

学单片机的时候就是这种方法学的 很有用 arm就不知道咋整了 用什么都不知道

使用特权

评论回复
8
啥是arm|  楼主 | 2013-3-24 10:47 | 只看该作者
lr2131 发表于 2013-3-24 09:49
想回答你的问题,但是感觉很纠结。不知道怎么说好,以下是个人观点:
既然还是在学校,那我还是不要建议工 ...

嗯 确实 可以考虑扩展一下广度 你的意思是 DSP FPGA之类的吗?
你的回复很认真  很感谢你上次的回复  还有这次的
:)

使用特权

评论回复
9
啥是arm|  楼主 | 2013-3-24 10:57 | 只看该作者
dong_abc 发表于 2013-3-23 23:05
把裸机程序 填充到驱动框架里边就是驱动程序了哦,所以裸机还是练一下比较好。 有单片机基础,完全可以跳过 ...

哦,你说的驱动是不是就是那本linux设备驱动程序里面讲的东西,既然有linux那驱动是不是要用到操作系统内核之类的呢 那就得先学操作系统是不?

使用特权

评论回复
10
lr2131| | 2013-3-24 12:37 | 只看该作者
请不要这么快被某一个具体的操作系统局限了思维。

首先,像Linux和Wince这些个OS,它们自己对添加进来的驱动程序是有框架性的要求的。

例如,Wince比较常见的有什么流接口驱动,linux有什么字符设备驱动啊啥的不细说。不同的内核有不同的要求,但有很多在思想层是一样的。

说这些,也就是说,你懂裸机了,不是说就能直接不怎么改代码就能把程序加到这些OS里面去,OS对驱动是有要求的,这点不同于UCOS2/UCOS3这些对驱动程序无结构框架性要求的。
所以呢,写驱动程序时,要注意:
1.符合驱动程序框架的要求,该用字符设备驱动模型就使用字符设备驱动模型,改使用块设备驱动模型就使用块设备驱动模型。那么,这个驱动模型呢,Windows系列的和linux系列的有很多在底层实现是不一样的,但是如果通了其中一种,另一种或者说另一类系统很快就通,总之一句话,很多东西是相通的。当然,这不是说随便搞个OS就开始学,当然还是要看自己的情况和工作情况选一个合适的。

2.这些驱动程序在编写时,需要了解内核给你提供的API,注意在应用层提供的API和内核层提供的API是有很大差异的,打个比方。内核用printk打印信息,应用层用printf打印信息。这个也就是说,你需要知道内核层的API怎么用,但没叫你去实现printk吧,就算你不知道它怎么写的,你是不是也能用它做它能做的事呢。
所以一般不需要你学操作系统内核,学的是操作系统提供给你的内核API。你一定会遇到需要使用copy_to_user()的这样的东西,但你说你一定要知道它是怎么做的,你才能写驱动程序吗?不是吧,你只是去用它,不是要设计它。当然,你懂它里面的原理,一般会帮助你更好的用它,但初学的话,确实是没必要一下扎到底的。

使用特权

评论回复
11
啥是arm|  楼主 | 2013-3-24 13:29 | 只看该作者
lr2131 发表于 2013-3-24 12:37
请不要这么快被某一个具体的操作系统局限了思维。

首先,像Linux和Wince这些个OS,它们自己对添加进来的驱 ...

哦  驱动这块照你这么说我想我大致了解了。
那那个整体的学习框架按照韦东山那样来是不是不行呀  他  ① 先讲的裸机 ②然后直接移植uboot③然后移植linux内核④构建根文件系统⑤linux内核调试技术然后讲设备驱动开发   这样行吗

使用特权

评论回复
12
lr2131| | 2013-3-24 13:49 | 只看该作者
本帖最后由 lr2131 于 2013-3-24 15:40 编辑

其实我也很菜的,看到问题很想回答,想帮助别人。但是,毕竟只是个人的经验,具不具有代表性我也不知道,所以,很怕自己的话会误导别人,所以,也请你多多考量。

韦东山的视频没怎么看过,但是你也大致的描述了。要不要按他的来,关键就看你想不想按这样的流程来。然后你要是想按照他的流程来,那你现在大致了看了几遍后,有没有跃跃欲试的心情呢,有没有感觉能搞出来了。

但就大致看了你的情况,我个人建议是可以去尝试,结果会怎么样,主要是看你手上这个韦东山视频讲的细致程度,还有你的信心和毅力。

说实话,uboot是很有意思的,但是也比较难。
如果是比较浅的学习一下,也能解决一些简单的问题,这样也好。
但是如果真想学得很深,需要学很多东西,也比较底层的东西。

所以建议你不要一下学很深,建立感觉和信心。但是也请不要在学完了后就建立错误的认识,误认为原来uboot就这么回事就这么简单。也就是说不要让错误的认识先入为主。

其实你也可以直接搭建环境来编写最简单的驱动程序,在能跑linux的ARM开发板上,例如ARM9、ARM11、QT210上边运行你的驱动个程序,完全跳过你描述的韦东山的前5节。

真怕移植这移植那把你的豪情给磨没了。还是直接开始搭建交叉编译环境,开始编写驱动程序吧。

学一门语言,入门的程序一般都是hello world,
学单片机,入门的程序一般都是点亮一个LED。

你也可以写个字符设备驱动程序来驱动ARM板上的灯亮。

一般,你可以先写出主体程序,主功能实现了,逐步完善。不要一开始就写出全部的东西。当然,开始设想是要考虑的这么远,但做的时候要脚踏实地,一个一个的来。长信心嘛。

使用特权

评论回复
13
lelee007| | 2013-3-24 13:51 | 只看该作者
呵呵,把ELF结构和使用搞明白,搞明白编译、链接、加载原理,再来看这些什么bootloader,就是小case了,到那时候你自己也可以写bootloader了

使用特权

评论回复
14
啥是arm|  楼主 | 2013-3-24 13:57 | 只看该作者
lr2131 发表于 2013-3-24 13:49
其实我也很菜的,看到问题很想回答,想帮助别人。但是,毕竟只是个人的经验,具不具有代表性我也不知道,所 ...

嗯  真像你说的 移植蒙了 很谢谢你今天说的 对我帮助很大 我想我得改一下我的学习方法了 不应该钻得太深

很谢谢呀

使用特权

评论回复
15
lr2131| | 2013-3-24 14:01 | 只看该作者
lelee007 发表于 2013-3-24 13:51
呵呵,把ELF结构和使用搞明白,搞明白编译、链接、加载原理,再来看这些什么bootloader,就是小case了,到 ...

你说的没错哦,ELF结构和编译加载的过程懂了,再就是单片机启动初始化的那些东西或者说是裸机的启动代码会了,bootloader就不难了,我现在也想要完整的深研一下这个。

使用特权

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

本版积分规则

46

主题

181

帖子

0

粉丝