当前位置:网站首页>嵌入式实验二
嵌入式实验二
2022-08-03 05:21:00 【物腐虫生】
强调文本强调文本
加粗文本加粗文本
标记文本
删除文本
将u-boot-mini6410-20111018.tar.gz 放到FriendlyARM文件夹下,输入解压指令
tar xzvf u-boot-mini6410-20111018.tar.gz
在解压后的文件夹下,可以看到Makefile文件,是整个uboot源码包编译的总Makefile,负责整个uboot的裁剪、编译等过程。
tar xzvf u-boot-mini6410-20111018.tar.gz
解压后进入u-boot-mini6410进行内核编译
第二步,实验设备使用128M内存,处理器采用S3C6410,生成配置文件命令为
make mini6410_nand_config-ram128
第三步,编译UBOOT命令为make,编译完成后生成uboot.bin,该文件存储在opt/FriendlyARM/u-boot-mini6410 目录下。
该步骤若出问题请查看该文档解决,后面解决方法一致
嵌入式实验二注意点
make mini6410_nand_config-ram128
make
内核裁剪及编译
第一步,解压缩Linux内核源码,命令tar xzvf linux-2.6.38-20141014.tgz,在解压缩后的文件夹下,可以看到Makefile文件,是整个Linux内核源码包编译的总Makefile,负责整个Linux内核的裁剪和编译工作。
tar xzvf linux-2.6.38-20141014.tgz
第二步,内核源码裁剪
方式1:通常情况下linux根目录下有个.config文件,该文件是宏文件,每个宏和一定的源码文件关联,如果注释掉相应宏,则对应源码将不会被编译进linux内核映像文件中。
实验1----打开该文件可以选择注释掉部分宏,如CONFIG_NET=y,重新编译(make时需将kernel/timeconst.pl中的if (!defined(@val)) {改为if ([email protected]) {)会发现内核文件zImage大小为3,273,064字节,或者到net目录下发现所有的c文件B (A.被编译 B.未被编译)。
实验2----重新打开.config文件,取消注释宏CONFIG_NET=y,重新编译会发现内核文件zImage大小为3,757,408字节(也有可能是3757412字节),或者到net目录下发现所有的c文件A (A.被编译 B.未被编译),且net目录下的所有被编译后的目标文件被连接成一个目标文件built-in.o
方式2:在shell环境下,进入内核源码顶层目录,执行命令make menuconfig,进入图形环境下裁剪Linux内核。找到“网络支持选项”,按空格键取消选择,并保存退出,重新打开.config文件,发现宏CONFIG_NET是否被定义B(A. 被定义 B.被注释 ),重新编译会发现内核文件zImage大小为3,273,064字节,或者到net目录下发现所有的c文件B(A.被编译 B.未被编译)。
第三步,编译内核,命令为make zImage,编译完成后生成zImage,该文件存储在/opt/FriendlyARM/linux-2.6.38/arch/arm /boot目录下。
make menuconfig
make zImage
5.3 内核添加自己代码的方式
本例以添加一个RC4加密算法为例来进行
第一步,找到内核源码存放加密算法的文件夹,位于crypto目录
第二步,在该目录下编写代码rc4.c文件,文件仅简单包含如下内容
#include <linux/kernel.h>
void rc4ENCrypt()
{
printk("THIS IS A SIMPLE TEST,NO USE\n");
return;
}
第三步,打开该文件夹下Kconfig文件,添加如下代码
config RC4ENCRYPT
bool "RC4 ENCRYPT SUPORT"
help
this is a simple test ,no use
第四步,执行make menuconfig,在其中找到"RC4 ENCRYPT SUPORT"选项,并选中,退出配置,在.config文件中,(A.有 B.没有)宏CONFIG_RC4ENCRYPT。
第五步,打开crypt目录下的Makefile文件,添加如下代码
obj-$(CONFIG_RC4ENCRYPT) +=rc4.o
第六步,编译内核,并查看crypt目录下(A.有 B.没有)rc4.o文件
5.4 文件系统构建
步骤【参看04- Tiny6410 Linux开发指南.pdf文档1.7~1.8节】
第一步,解压缩busybox,命令为 tar xzvf busybox-1.17.2-20101120.tgz,解压缩完成后,可以看到在目录下有Makefile文件和.config文件,Makefile文件负责编译,具体编译哪些文件依据.config文件。打开fa.config文件,查看其中宏。
第二步,裁剪命令,执行命令make menuconfig,去除其中部分选项,保存退出,查看.config文件,可以看到相应宏定义也发生变化了。
第三步,编译文件,命令为make,安装到相应的文件夹,命令为make install,到对应的文件夹下查看生成的命令文件。
第四步,创建配置文件,将busybox源码目录下的etc文件夹拷贝到刚才的文件夹下
第五步,拷贝已经移植好的lib到刚才的文件夹下
第六步,创建文件夹dev proc tmp等,
第七步,利用工具将文件夹制作成根文件系统,命令为sudo mkext3image rootfs fs.img
tar xzvf busybox-1.17.2-20101120.tgz
make menuconfig
make
make install
sudo mkext3image rootfs fs.img
最后一步进行前需提前将mktools工具解压安装至根目录中,它们是将把同一个目标文件系统目录压制为不同格式的映像文件,以用来安装烧写到 Nand Flash 或者复制到 SD 卡中运行。这样mkext3image命令才可执行。
边栏推荐
猜你喜欢
随机推荐
三角形个数
磁盘空间管理
Playing with Markdown(2) - Extraction and Manipulation of Abstract Syntax Trees
玩转Markdown(2) —— 抽象语法树的提取与操纵
-整数求和-
0.ROS常用命令
Makefile语法
lintcode2330 · 计算x秒后的时间
详解背包问题(DP分支)
Flask,3-6
【DC-2 Range Penetration】
轨迹(形状)相似性判断与度量方法
【解读合约审计】Harmony的跨链桥是如何被盗一亿美金的?
【CSRF,SSRF,XXE,PHP反序列化,Burpsuite】
7.8(6)
用scikit-learn学习谱聚类
UPC-Longest X
-元素之和-
用户登录验证程序的实现
用iPhone前摄3D人像建模,Meta:我看行