一、引言

最近在学习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登录

AM335x开发环境搭建 基于MYD-AM335x开发板 超详细相关推荐

  1. 简述python的安装过程_python3+ selenium3开发环境搭建-手把手教你安装python(详细)...

    环境搭建 基于python3和selenium3做自动化测试,俗话说:工欲善其事必先利其器:没有金刚钻就不揽那瓷器活,磨刀不误砍柴工,因此你必须会搭建基本的开发环境,掌握python基本的语法和一个I ...

  2. python3+ selenium3开发环境搭建-手把手教你安装python(详细)

    环境搭建 基于python3和selenium3做自动化测试,俗话说:工欲善其事必先利其器:没有金刚钻就不揽那瓷器活,磨刀不误砍柴工,因此你必须会搭建基本的开发环境,掌握python基本的语法和一个I ...

  3. iPhone开发环境搭建全过程 iPhone手机开发内容,中文手册

    http://3g.edu.csdn.net/kecheng/iphone.html  iPhone手机开发内容 http://www.docin.com/p-34874880.html# iPhon ...

  4. python安卓版开发环境搭建_React Native Android 开发环境搭建(Windows 版)

    补上之前说的 Windows 系统的 React Native 开发环境搭建,坑还是比 Mac 环境下的多些.此文的受众还是已经搭建过 Android 开发环境的同学. 需要安装的软件 Chocola ...

  5. android 7 开发环境搭建,win7下android 开发环境搭建

    第一步:准备JDK最小版本1.5 第二部:准备环境所需要的安装介质Eclipse ,ADT和windows平台下的SDK. 等待安装JDK和eclipse完成后,在eclipse中选择Help-> ...

  6. 跟光磊学Java-macOS版Java8开发环境搭建(基于ARM 64-bit)

    日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电脑,如果是MacBookPro那么就使用macOS开发项目,因 ...

  7. 《HarmonyOS开发 - IPC Camera开发笔记》第2章 HiSpark IPC Camera开发环境搭建(基于V1.1.4)

    开发环境: 开发系统:Ubuntu 20.04 Harmony版本:code-v1.1.4-LTS.tar HiSpark IPC Camera基于华为海思Hi3518芯片,支持LiteOS.Open ...

  8. [TI TDA4 J721E]PROCESSOR-SDK-J721E RTOS Linux 开发环境搭建 基于 ubuntu 18.04

              首先感谢阅读,如果您也对TDA4相关的开发感兴趣,我们这边有个学习交流微信群,可以入群和大家一起交流学习. 资历较浅,水平有限,如遇错误,请大家多指正! 保持开源精神,共同分享.进 ...

  9. flex java 开发环境搭建_Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立) 2019年12月07日 阅读数:7 这篇文章主要向大家介绍Flex+JAVA+BlazeDS开发环境配置(Java工程 ...

  10. linux下python开发环境搭建_linux下python开发环境之二——安装Eclipse+PyDev

    Eclipse是由java开发的,所以要想让Eclipse跑起来就得安装jdk,在命令行里输入javac就能查看本机是否已经安装好了jdk了. 1.安装jdk 先从oracle官网上下载jdk,放到/ ...

最新文章

  1. 20135127陶俊杰 实验一
  2. java 深入了解DTO及如何使用DTO
  3. ubuntu系统下Java环境JDK的安装
  4. 聚合天气--ajax 通过城市名取数据
  5. 位置采集[置顶] iPhone手机上的GPS位置信息采集与分享应用
  6. 张高兴的 Windows 10 IoT 开发笔记:BMP180 气压传感器
  7. 《高效对话》— 综合素质提升书籍
  8. [Java集合源码阅读]-ArrayList扩容机制
  9. Verilog设计实例(1)线性反馈移位寄存器(LFSR)
  10. 需求分析,我们应当怎样做
  11. 【我爱破解】对某软件的逆向分析与注册机编写
  12. Java5的倍数_关于java:将数字四舍五入到最接近的5的倍数
  13. Infopath2007表单转化成word2007
  14. 计算机怎么不读u盘,老司机告诉你电脑不读U盘的解决方法
  15. python二项分布产生随机数_python随机生成 - osc_c10h48oh的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. 大数据采集技术与预处理
  17. SD-WAN,改善网络现状
  18. 吴恩达神经网络和深度学习
  19. AFNetworking2.5使用
  20. ABB 120 六轴机械手臂编程调试(二)

热门文章

  1. 我的世界服务器被踢会显示什么,我的世界:500人被踢,服务器“假死”,2b2t的附魔台成掉线之王...
  2. 去中介化的租房EOS DAPP,实现租客与房东互赢
  3. VUE框架应用包---------微信二维码应用
  4. 解决许可证的相关问题
  5. Excel快速合并,简单方法,轻松搞定!
  6. 申请苹果开发者账号流程
  7. 测试第48届格莱美完全获奖名单『二』
  8. ksz8863调试总线,
  9. SQL Server 由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN xxx 失败问题解决
  10. 56个民族及民族代码的sql语句