2014025653《嵌入式系统程序设计》第三、四周学习总结
课本学习总结
tftp是简单文件传输协议,它可以看作是一个ftp的简化版本,与FTP相比,它最大的区别就是没有用户管理的功能。它的传输速度快,可以通过防火墙,使用方便快捷。
BootLoader是在操作系统内核运行之前运行的小程序,它类似于PC机中的BIOS程序,可以完成硬件设备的初始化。
BootLoader流程
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513110915144-890557830.png)
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513110941785-1883223311.png)
U-Boot特点
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513111106597-100839660.png)
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513112128144-758657499.png)
U-Boot主要功能
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513112219676-955928660.png)
实验楼总结
获取交叉编译工具的源代码并解压
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513113414519-1983453583.png)
测试arm-linux-gcc是否可运行
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513113611660-758179967.png)
运行结果显示找不到该文件或目录,主要原因是当前系统环境是x86_64位,而arm-linux-gcc是32位,需要解决64位系统下安装32位软件的问题。
解决64位系统下安装32位软件的问题
sudo apt-get update
sudo apt-get install lsb-core
执行export命令将arm-linux-gcc所在目录临时加入PATH中:
export PATH=$PATH:/home/shiyanlou/gcc-3.4.6-glibc-2.3.6/bin
获取u-boot源码导入解压
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513114620613-177986606.png)
建立板级支持包并将eduk2410目录下的smdk2410.c文件更名为eduk2410.c:
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513114921019-700349193.png)
将eduk2410.c文件中的gpio->GPBCON = 0x00044555改为gpio->GPBCON = 0x0004455A:
为了使编译的时候能把这个文件编译进去,需要修改相应的Makefile:
将COBJS := smdk2410.o flash.o
改为COBJS := eduk2410.o flash.o
我们也需要为我们的开发板建立自己的配置文件。可以直接从 smdk2410开发板的配置文件中修改而来。因此我们先把smdk2410的配置文件复制到我们开发板的配置文件当中:
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513115558707-963004065.png)
修改Makefile
将smdk2400_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
修改为eduk2410_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t eduk2410 NULL s3c24x0
编译U-Boot运行
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513115848910-1889452885.png)
结果
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513120245207-1861095424.png)
作业
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513121348738-1282052123.png)
由代码可知需要新建一个src_file
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513121426738-1631806172.png)
最后的结果
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513121448160-1804512480.png)
代码注释
![](http://images2015.cnblogs.com/blog/1150707/201705/1150707-20170513121514269-312280648.png)
学习进度条
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
5000行 |
9篇 |
180小时 |
熟悉了Linux,vi,gcc |
第一周 |
200/200 |
1/1 |
20/20 |
学会应用vi、gdb和makefile |
第二周 |
400/600 |
1/2 |
20/40 |
了解了交叉编译和BootLoader的应用 |
第三周 |
600/1200 |
1/3 |
20/60 |
|
第四周 |
800/2000 |
1/4 |
20/80 |
|
第五周 |
800/2800 |
1/5 |
20/100 |
|
第六周 |
600/3200 |
1/6 |
20/120 |
|
第七周 |
600/2800 |
1/7 |
20/140 |
|
第八周 |
600/4400 |
1/8 |
20/160 |
|
第九周 |
600/5000 |
1/9 |
20/180 |
|