打印

armlinux初学者再次发问

[复制链接]
1678|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weixinal|  楼主 | 2012-11-14 20:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1,arm linux内核在储存器中不是以文件形式存在的对吗,跟任何文件系统没关系是吗?2,gcc能编译bin格式的arm裸机程序,也能编译linux系统的程序,怎么会这样呢?arm裸机和linux运行的程序师一样的?如果不一样,linux的程序里面是什么?是arm指令呢还是需要内核翻译的代码?
3,make和 make menuconfig是linux的一个程序吗?问什么在任何目录下都能执行和调用gcc?
4,我们用超级终端连接linux主机,为什么可以执行类似图形化界面的vi编辑器,超级终端不是只是接受和发送字符传送文件的吗?难道也有某种协议在里面(不知道第四个问题有没有描述清楚)。
5,nandflsh的ecc在系统的那一部分实现的?uboot,kernel,还是文件系统。阵势做项目的时候ecc是驱动工程师的活还是谁的活。
问题太多了,谢谢了

相关帖子

沙发
jlass| | 2012-11-15 08:53 | 只看该作者
我先说一下我的看法,准确的说法还是等阿南来回复吧
1、对于储存器来说任何东西都是一段二进制数据,跟任何文件系统没直接关系
2、两种的最终效果应该是一样的,不过裸机是直接操作芯片,linux是间接操作芯片(利用shell)
3、不是,跟makefile文件有关,脚本文件
4、vi编辑器是文字界面的
5、uboot与kernel都要实现一次,应该是你的活(硬件工程师)

使用特权

评论回复
板凳
xinzha| | 2012-11-15 10:53 | 只看该作者
对于cpu来说,一切都是裸机程序,它只按照自己的预定模式去执行读到的代码。

使用特权

评论回复
地板
weixinal|  楼主 | 2012-11-15 20:40 | 只看该作者
2# jlass 2,对于gcc 编译出来bin格式程序和linux运行的程序区别还是不理解?我知道对于cpu来说都是指令,也就是gcc编译出来bin。单linux下的程序也是里面也是直接的指令吗?如果不是直接指令,那linux负责解析这些数据到arm指令?如果linux的应用程序直接是arm指令的话,那linux只负责调度,任务通讯吗?
      3.makefile文件是个文本文件啊,应该是谁读取它在执行?谁在读取makefile?谁在指令makefile里面的指令呢?
      4.vi编辑器确实是文字界面的,但是你可以通过箭头等按键操作其显示界面,按道理来说linux主机发送过来的字符都是更新在后面的啊?怎么会更新vi编辑器界面呢?
      5,这么说的话,文件系统也要实现吧?那文件系统怎么能对任意nandflash操作呢?文件系统应该不是通用的吧?

使用特权

评论回复
5
原野之狼| | 2012-11-15 23:49 | 只看该作者
本帖最后由 原野之狼 于 2012-11-15 23:57 编辑

1,arm linux内核在储存器中不是以文件形式存在的对吗,跟任何文件系统没关系是吗?
构建完后的linux内核镜像以文件的形式存在于宿主机上。
通过下载工具把该镜像文件的内容烧录到目标系统的flash当中去,此时已经无所谓文件系统的概念,存在flash上的不过就是一系列机器指令和数据。
boot程序load内核部分的内容到ram,然后跳转到该区域执行。
实际上在调试时内核映像也可以直接“烧录”到ram上。
当然内核也可以以文件的形式存在于目标机器上,这就要求boot程序具备解析文件系统的功能,甚至解压缩功能(如果镜像文件是压缩过了的话)

2,gcc能编译bin格式的arm裸机程序,也能编译linux系统的程序,怎么会这样呢?arm裸机和linux运行的程序师一样的?如果不一样,linux的程序里面是什么?是arm指令呢还是需要内核翻译的代码?
gcc的主要功能用于编译链接代码,生成对应的机器指令。
编译完后的应用程序作为一个可执行文件,其包含很多部分的内容(详情搜索elf),当然必须包含最终的机器指令,还有模块依赖的描述,以及其它。。。
该可执行文件经操作系统加载,把机器代码(部分或全部)load到了物理内存,并构建了可运行的环境,这个属于操作系统的内容了,可以不用深究。
在编译linux内核的过程中,跟一般的应用程序的编译是有些差异的,详情搜索“内核构建系统”,最终生成一个映像文件,此映像文件的内容由boot来load,无需用操作系统来load。

3,make和 make menuconfig是linux的一个程序吗?问什么在任何目录下都能执行和调用gcc?
make是开发机上的应用程序,menuconfig作为make程序的参数。
gcc由make调用。
任何目录?问题问得不对。

4,我们用超级终端连接linux主机,为什么可以执行类似图形化界面的vi编辑器,超级终端不是只是接受和发送字符传送文件的吗?难道也有某种协议在里面(不知道第四个问题有没有描述清楚)。
vi里头的都是字符,图形是用字符拼接的。
5,nandflsh的ecc在系统的那一部分实现的?uboot,kernel,还是文件系统。阵势做项目的时候ecc是驱动工程师的活还是谁的活。
当linux内核位于flash上的时候,uboot在加载的时候自然要配置好nand flash的控制器,要不然无法加载。
cpu由linux内核接管后,内核的驱动程序会重新初始化nannd flash控制器。

使用特权

评论回复
6
jlass| | 2012-11-16 08:58 | 只看该作者
楼上已经解释的很清楚了,我就不献丑了
对于第3个问题,请百度一下automake即可知晓

使用特权

评论回复
7
weixinal|  楼主 | 2012-11-16 12:53 | 只看该作者
5# 原野之狼 您解答的太细致了,感谢

使用特权

评论回复
8
weixinal|  楼主 | 2012-11-17 13:28 | 只看该作者
5# 原野之狼 关于第3个问题,我借用一张图片来表达我的意思吧,这个图片我们可以早终端上选择上面列举的条目,这是怎么回事

yaf.jpg (34.38 KB )

yaf.jpg

使用特权

评论回复
9
lelee007| | 2012-11-18 09:27 | 只看该作者
第一个问题还像个问题,呵呵,从提问中可以看出你思考了

这个建议看下ELF原理,链接及加载的原理,这个问题你就能全弄明白

一两句话是解释不清楚的

使用特权

评论回复
10
ji_dan| | 2012-11-18 21:15 | 只看该作者
5楼回答的很透彻~~:)

使用特权

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

本版积分规则

个人签名:电工小店 http://shop63460958.taobao.com mailbox:wx-ta@163.com

4

主题

51

帖子

4

粉丝