lunix 怎么上网 作为一个新人,怎样学习嵌入式Linux?(2)

电脑杂谈  发布时间:2018-02-10 21:58:20  来源:网络整理

3. windows能识别出C盘、D盘,那么肯定能读写硬盘才行。这涉及的东西称为驱动程序。当然不仅仅是硬盘,还有网卡、USB等等。

?? ??嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。

?? ???? ??

?? ??先说到这里吧,嵌入式LINUX里含有bootloader, 内核, 驱动程序、根文件系统这4大块。

一、bootloader:

?? ?? 它就是一个稍微复杂的裸板程序。但是要把这裸板程序看懂写好一点都不容易。Windows下好用的工具弱化了我们的编程能力。

很一玩嵌入式就用ADS、KEIL。你能回答这几个问题吗?

1. 一上电,CPU从哪里取指令执行?

?? ??答:一般从Flash上指令。

2. 但是Flash一般是只能读不能直接写的,如果我用到全局变量,这些全局变量在哪里?

?? ??答:全局变量应该在内存里

kali linux渗透教程_lunix 怎么上网_linux上网 密码

3. 那么谁把全局变量放到内存里去?

?? ??答:长期用ADS、KEIL的朋友,你能回答吗?这需要"重定位"。在ADS或KEIL里,重定位的代码是制作这些工具的公司帮你写好了。

?? ???? ?? 你可曾去阅读过?

4. 内存那么大,我怎么知道把"原来存在Flash上的内容"读到内存的"哪个地址去"?

?? ??答:这个地址用"链接脚本"决定,在ADS里有scatter文件,KEIL里也有类似的文件。但是,你去研究过吗?

5. 你说重定位是把程序从Flash复制到内存,那么这个程序可以读Flash啊?

?? ??答:是的,要能操作Flash。当然不仅仅是这些,还有设置时钟让系统运行得更快等等。

?? ??

?? ??先自问自答到这里吧,bootloader这一个裸板程序,其实有3部分要点:

1. 对硬件的操作

2. 对ARM体系处理器的了解

3. 程序的基本概念:重定位、栈、代码段数据段BSS段什么的。

?? ??

?? ?? 对硬件的操作,需要看原理图、芯片手册。这需要一定的硬件知识,不求你能设计硬件,但是至少能看懂; 不求能看懂模拟电路,

但是要能看懂数字电路。这方面的能力我是在学校里学到的,微机原理、数字电路这2本书(书名忘了)就足够了。但是我怀疑你有无耐

心把这2本书看完。我不知道现在有没有更快捷的书。想速成的话,就先放掉这块吧,不懂就问GOOGLE、发贴。

另外,芯片手册是肯定要读的,别去找中文的,就看英文的。开始是非常痛苦,以后就会发现那些语法、词汇一旦熟悉后,

读任何芯片手册都很容易。

对ARM体系处理器的了解, 看杜春蕾的<ARM体系架构与编程>吧,里面讲有汇编指令,有异常模式、MMU等。也就这3块内容需要你了解。

程序的基本概念,王道当然是去看编译原理了。可惜,这类书绝对是天书级别的。劝你若非超级天才还是别去看了。就看我写的

<嵌入式Linux应用开发完全手册>和第1期视频吧,别担心,不用花钱。照着视频把硬件相关的实验做了,这些概念就清楚了。我还没有

发现第2套讲这些概念的书或视频,允许我盲目吹嘘一回。

对于bootloader,我学习时是先看了<ARM体系架构与编程>,然后自己写程序把各个硬件的实验都做了一遍,比如GPIO、时钟、

SDRAM、UART、NAND。把它们都弄清楚了,组台在一起就很容易看懂u-boot了

总结一下,看懂硬件原理图、看芯片手册,这需要你自己去找资料。剩下的,就按<嵌入式Linux应用开发完全手册>和第1期视频的章

节目录去学习吧。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-70740-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 随车娘子
      随车娘子

      敢独立就可以挂上五星红旗

    • 三更
      三更

      >美帝胆敢违反国际法

    热点图片
    拼命载入中...