资料整理于自己的笔记(有许多的图片和代码块没有添加,后面会慢慢补齐),也有些是博客之类 ,如有侵权,请及时联系我,我会及时删除。因为都是手码的,可能会有些错别字,理解有误的地方请联系我,以便及时修改
CPU(控制器/运算器) + 内存(DDR /SDRAM ) +外存(硬盘、flash)
嵌入式系统的启动过程:Uboot存放在norflash中,开机从norflah启动Uboot、uboot去初始化DDR,OS存放flash中,DDR初始化结束以后,将OS加载到DDR中去运行,这是就启动了操作系统。
环境变量就是操作系统的全局变量。每一个环境变量对操作系统来说都是唯一的,名字和所代表的意义都是唯一的。linux系统可以有很多个环境变量。其中有一部分是linux系统自带的,还有一些是我们自己来扩充的。我们这里涉及到的一个环境变量是
PATH。PATH这个环境变量是系统自带的,它的含义就是系统在查找可执行程序时会搜索的路径范围。
exportPATH=/usr/local/arm/arm-2009q3/bin:$PATH
在一个终端中执行以上命令后,该终端中就可以直接使用arm-linux-gcc了,但是只要关掉这个终端再另外打开一个立马就不行了。原因是我们本次终端中执行时的操作只是针对本终端,以后再打开的终端并未被执行过这个命令所以没导出。
解决方案是在~/.bashrc中,添加export PATH=/usr/local/arm/arm-2009q3/bin:$PATH 即可。
注意:我们导出这个环境变量是在当前用户,如果你登录时在其他用户下是没用的。
1.4.3.3、为工具链创建arm-linux-xxx符号链接
lnarm-none-linux-gnueabi-addr2line -s arm-linux-addr2line
启动操作系统中,有一项也很重要,就是给内核传参,依靠传参来配置内核启动的细节。
(2)部署整个操作系统(部署就是把响应的东西放到该在的地方,比如OS在flash中,Uboot把它加载到DDR中去运行)根文件系统的布置,Uboot可以布置操作系统(烧录系统镜像。)
Uboot支持SOC级,和版级的硬件驱动,比如在Uboot刷系统中,LCD屏幕上显示了一个进度条,在开机自启动的时间,自动提供了一个Shell界面(SOC),如果在启动时需要配置网络之类的,那么就要包含驱动网卡芯片的功能。
Uboot本质上是一个裸机程序,裸机程序和操作系统不同,裸机程序只能单个运行,操作系统可以多进度运行,重复运行,而uboot不可以,这也是为什么Uboot可以ping通主机而主机不能Ping通uboot的原理,因为Uboot内不具备接收数据包的功能。
Uboot的入口就是自动启动,它的终极目标就是启动操作系统,如果它没有成功启动操作系统,就会一直打转,知道启动为止,而一旦操作系统启动代码开启,这就是它的出口,它就死了。
(2)set = setenv name value 设置环境变量
(3)save 保存更改(这里有一个机制,uboot中的环境变量都是存放在Flash中的,所以可以实现掉电保存,而在uboot中修改的环境变量是在内存中,所以当我们需要重启依旧保持环境变量的修改,那么就需要save)
(1)umask:需要设置为同一个子网掩码255.255.255.0
(4)虚拟机的菜单中有个“虚拟网络编辑器”,这里面要设置为桥接到有线网卡。(默认是自动的,自动的一般会影响ping通。因为电脑现在一般都有2个网卡:一个有线的一个无线的。如果选了自动,那么虚拟机会自动桥接到无线网卡上,但是我们却是通过有线网卡来连接开发板的,自然ping不通)
(1)安装好以后会在Ubuntu中有一个文件夹(我的是tftpboot),我们把需要传输的镜像放在这个文件夹下,然后去uboot去pingUbuntu,如果通了,就可以使用命令
(2)传输时是依靠字符来匹配文件,所以命令中的字符一定要匹配
(3)传输的地址要有效,比如S5PV210中是0x30000000~0x50000000
md[.b, .w, .l] address [# of objects]