AM335x开发环境搭建 基于MYD-AM335x开发板 超详细

一、引言

最近在学习Linux,拿到了一块米尔科技的MYD-AM335x开发板。拿到板子按着官方给的手册一步一步搭建开发环境,结果在编译文件系统是一直不通过,困惑了我很久,参考了一个大佬写的教程,初探MYD-AM335x开发板_fisheader的博客-CSDN博客_am335x开发板资料,大家可以先参考大佬的教程。但我在编译的时候还是遇到了一个问题,所以写下这篇文档记录一下,以后遇到同样的问题也可以参考一下。

二、设置开发工具

2.1 安装需要的开发工具

我的ubuntu 版本是ubuntu 16.04 LTS版本。

$ sudo apt-get install build-essential git-core libncurses5-dev u-boot-tools 
$ sudo apt-get install flex bison texinfo zip unzip zlib1g-dev gettext 
$ sudo apt-get install gperf libsdl-dev libesd0-dev 
$ sudo apt-get install g++ xz-utils 
$ sudo apt-get install subversion

需要注意的是在64位的系统上,需要安装32位兼容的库。

$sudo apt-get install libc6-i386 lib32stdc++6 lib32z1

2.2 设置交叉编译工具

需要先在自己的目录下创建本地的 WORKDIR 文件夹,将官方给的资料料04-Linux_Source文件夹中的文件全部拷贝到WORKDIR文件夹中。

输入以下指令设置交叉编译工具

$ cd WORKDIR/Toolchain 
$ tar xvf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz

临时修改环境变量 该设置只对当前终端有效

$ export PATH=$PATH:/home/longge/WORKDIR/Toolchain/gcc-linaro-5.3-2016.02-x86_64_arm-linux -gnueabihf/bin 
$ export ARCH=arm 
$ export CROSS_COMPILE=arm-linux-gnueabihf-

注意在修改PATH时要把路径改为你自己的路径。

永久修改环境变量 对所有用户都有效

如果还不会用vi/vim,可以使用gedit打开文件,一样的效果

vi ~/.profile

在行尾添加:

export ARCH=arm 
export CROSS_COMPILE=arm-linux-gnueabihf- 
export PATH=$PATH:/home/longge/WORKDIR/Toolchain/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin

然后输入source ~/.profile或重启ubuntu使环境变量生效

测试环境变量是否更新成功

$echo $ARCH
arm
$echo $CROSS_COMPILE
arm-linux-gnueabihf

测试结果如图,说明环境变量更新成功。

交叉编译器的验证:

$ arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
……
Thread model: posix
gcc version 5.3.1 20160113 (Linaro GCC 5.3-2016.02)

测试结果如图说明交叉编译器配置成功

三、构建系统

3.1 Bootloader

进入Bootloader目录,解压U-boot源码:

$ cd WORKDIR/Bootloader
$ tar -jxvf myir-u-boot.tar.bz2
$ cd myir-u-boot

不同的开发板对应不同的配置文件,配置文件位于myir-u-boot/configs/目录 我使用的使AM335x开发板,对应的是myd_c335x_defconfig。 编译时可以使用多线程编译,更快。

u-boot的编译过程:
$ make distclean
$ make myd_c335x_defconfig
$ make -j8

编译完成后,在u-boot目录下会生成MLO和u-boot.img文件

3.2 编译Linux内核

进入Kernel目录,解压内核源码:

$ cd WORKDIR/Kernel
$ tar -jxvf myir-kernel.tar.bz2
$ cd myir-kernel

不同的开发板对应不同的配置文件,配置文件位于myir-kernel/arch/arm/configs/目录,这里还是编译myd_c335x_defconfig

编译内核,注意事项

  1. 需配置环境变量 INSTALL_MOD_PATH
  2. 内核修改后,内核模块要和内核 zImage 一起编译
$ export INSTALL_MOD_PATH=$HOME/export/rootfsa/ 
$ make distclean 
$ make myd_c335x_defconfig 
$ make zImage dtbs -j8
$ make modules -j8
$ make modules_install -j8

建议使用多线程编译,不然要好长时间。编译完成后,会在myir-kernel/arch/arm/boot目录下生成zImage文件,在myir-kernel/arch/arm/boot/dts目录下生成设备树的二进制.dtb文件。

3.3 构建文件系统

使用Buildroot进行文件系统的制作

3.3.1 准备编译buildroot

进入Filesystem目录,解压文件系统压缩包

$ cd WORKDIR/Filesystem/
$ tar -jxvf myir-buildroot.tar.bz2
$ cd myir-buildroot/ 
$ make myd_c335x_defconfig

打开配置界面

$ make menuconfig

 注意:配置界面是在/Filesystem/myir-buildroot/目录下打开的,打开后先不要动,新打开一个终端配置bootloader代码来源和kernel代码来源

配置bootloader代码来源

$ cd WORKDIR/Bootloader/myir-u-boot
$ git init
$ git add . -f
$ git commit -m "Initial Version" -a

配置kernel代码来源

$ cd WORKDIR/Kernel/myir-kernel
$ git init
$ git add . -f
$ git commit -m "Initial Version" -a

输入git init可以查看本地git仓库的路径

配置界面-Kernel将Kernel Version路径替换成本地git仓库的路径

配置界面-Bootloaders将U-boot Version路径替换成本地git仓库的路径

配置界面-Build options将config文件路径替换成本地的路径 

完成以后,退出配置界面,提示保存,点击OK

最后编译

$ make -j8

在编译过程中我遇到了一个问题 

这是以为iperf-2.0.9 文件的hash值改变了,找到对应的hash文件修改hash值即可

iperf.hash文件在 WORKDIR/Filesystem/myir-buildroot/package/iperf/目录下,需要修改sha1和sha256的值,修改后的值如下

# From https://sourceforge.net/projects/iperf2/files/
sha1	59820895df9106ba189ccfdc5677077535ad50e7	iperf-2.0.9.tar.gz
# Locally computed:
sha256  db02911f35686e808ed247160dfa766e08ae3f59d1e7dcedef0ffb2a6643f0bf  iperf-2.0.9.tar.gz

修改后,继续make ,在 WORKDIR/Filesystem/myir-buildroot/output/images 下得到bootloader,kernel,以及各种格式的文件系统镜像。

四、系统更新
使用NAND Flash启动

Nand启动映像的更新需要借助于u-boot来完成。不管NAND Flash是否有数据,都可以利用TF卡启动的u-boot 对NAND Flash更新映像。

TF卡制作

  1. 用光盘目录03-Tools目录下的HP USB Disk Storage Format Tool 2.0.6工具将TF卡格式化为FAT或FAT32文件系统
  2. 将光盘目录02-Images\Linux-image目录下的映像文件拷贝到TF卡中
  3. 将自己的MLO,u-boot.img,zImage,myd_c335x.dtb,rootfs.ubi文件拷贝到TF卡进行替
  4. 将带有系统映象的TF卡插入开发板,连接对应板子设置启动方式的跳线帽的1-2脚,上电启动,在u-boot 的提示读秒处,按下键盘上任意键进入u-boot

出现MYIR>#表示进入u-boot命令行

U-Boot 2016.05 (Jan 09 2017 - 19:37:43 +0800) Watchdog enabled I2C: ready DRAM: 512 MiB NAND: 512 MiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 *** Warning - bad CRC, using default environment Net: cpsw Press SPACE to abort autoboot in 2 seconds 
MYIR>#

进入u-boot命令行后,输入run updatesys 

MYIR># run updatesys 
switch to partitions #0, OK mmc0 is current device reading MLO 55092 bytes read in 10 ms (5.3 MiB/s) NAND write: device 0 offset 0x0, size 0xd734 55092 bytes written: OK reading myd_c335x.dtb 39229 bytes read in 10 ms (3.7 MiB/s)NAND write: device 0 offset 0x80000, size 0x993d 39229 bytes written: OK reading u-boot.img 321300 bytes read in 34 ms (9 MiB/s) NAND write: device 0 offset 0xc0000, size 0x4e714 321300 bytes written: OK reading zImage 4480016 bytes read in 396 ms (10.8 MiB/s) NAND write: device 0 offset 0x200000, size 0x445c10 4480016 bytes written: OK reading rootfs.ubi 24248320 bytes read in 2111 ms (11 MiB/s) NAND write: device 0 offset 0xa00000, size 0x1720000 24248320 bytes written: OK 
MYIR>#

 再次出现MYIR>#,断电拔出TF卡,连接对应板子设置启动方式的跳线帽的2-3脚,重新上电,即可从Nand Flash启动,输入账户名root登录

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值