嵌入式资料
环境配置
开启Ubuntu与Windows文件互传
- 1.FTP服务
sudo apt install vsftpd
# 打开`vsftpd.conf`文件,找到`local_enable=YES`、`write_enable=YES`这两行,如有注释,取消注释
sudo vim /etc/vsftpd.conf
# 重启FTP服务
sudo /etc/init.d/vsftpd restart
查看交叉编译器版本
arm-linux-gnueabihf-gcc -v
- 2.设置NFS服务开启
# 安装nfs服务
sudo apt install nfs-kernel-server rpcbind
# 配置nfs
sudo vim /etc/exports
# 在文件最后增加nfs路径,文件路径要配置正确
/home/sml/linux/nfs *(rw,sync,no_root_squash)
# 重启nfs服务
sudo /etc/init.d/nfs-kernel-server restart
SSH服务开启
sudo apt install openssh-server
配置TFTP服务
# 安装tftp相关软件
sudo apt install tftp-hpa tftpd-hpa xinetd
在/home/sml/linux
目录下创建文件夹tftpboot
,使用chmod 777 tftpboot/
更改文件夹权限。
新建文件/etc/xinetd.d/tftp
,如果没有/etc/xinetd.d
目录的话自行创建,输入如下内容:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/sml/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
# 启动 tftp 服务
sudo service tftpd-hpa start
打开/etc/default/tftpd-hpa
文件,将其修改为如下所示内容:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/sml/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
# 重启 tftp 服务器
sudo service tftpd-hpa restart
编译uboot
正点原子已经移植好的uboot
文件地址:
1、程序源码->3、正点原子 Uboot 和 Linux 出厂源码->ubootimx-2016.03-2.1.0-ge468cdc-v1.5.tar.bz2
拷贝到Ubuntu的alientek_uboot
文件夹下,解压缩
tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2
1、512MB(DDR3)+8GB(EMMC)核心板
创建mx6ull_alientek_emmc.sh
脚本文件,内容如下:
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
运行脚本文件编译EMMC版本的uboot
./mx6ull_alientek_emmc.sh
2、256MB(DDR3)+ 512MB(NAND)核心板
创建mx6ull_alientek_nand.sh
脚本文件,内容如下:
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr256_nand_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
运行脚本文件编译NAND版本的uboot
./mx6ull_alientek_nand.sh
烧写uboot
挂载U盘,通过命令 ls /dev/sd*
找出新增U盘
#给予 imxdownload 可执行权限,一次即可
chmod 777 imxdownload
#烧写到 SD 卡,不能烧写到/dev/sda 或 sda1 设备里面!
./imxdownload u-boot.bin /dev/sdb
设置网络环境变量
靠近串口的网口(ENE2)插入网线。
环境变量 | 描述 |
---|---|
ipaddr | 开发板 ip 地址,可以不设置,使用 dhcp 命令来从路由器获取 IP 地址。 |
ethaddr | 开发板的 MAC 地址,一定要设置。 |
gatewayip | 网关地址。 |
netmask | 子网掩码。 |
serverip | 服务器 IP 地址,也就是 Ubuntu 主机 IP 地址,用于调试代码。 |
设置网络环境变量,需要根据实际情况设置。
setenv ipaddr 192.168.3.180
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.3.1
setenv netmask 255.255.255.0
setenv serverip 192.168.3.111
saveenv
下载zImage到开发板
使用NFS命令
nfs 80800000 192.168.3.111:/home/sml/linux/nfs/zImage
使用TFTP命令
tftp 80800000 zImage
Linux内核移植
1.NXP官方开发板Linux内核编译
NXP官方原版Linux源码路径:1、例程源码->4、NXP 官方 原版 Uboot和 Linux->linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
。拷贝到Ubuntu系统中,重新命名为linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek
。
修改顶层Makefile
#ARCH ?= $(SUBARCH)
#CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabihf-
配置并编译Linux内核
进入到Ubuntu中的Linux源码目录下,执行如下命令配置Linux内核:
# 第一次编译 Linux 内核之前先清理一下
make clean
# 配置 Linux 内核
make imx_v7_mfg_defconfig
# 编译 Linux 内核
make -j16
console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
cp arch/arm/boot/zImage /home/sml/linux/tftpboot/ -f
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/sml/linux/tftpboot/ -f
参考链接
正点原子 Linux imx6ull学习开始 Action~
IMX6ULL驱动开发实战连载-01搭建开发环境
【正点原子I.MX6ULL】一、Linux驱动开发环境搭建,初次体验开发全流程(必看)
正点原子linux阿尔法开发板使用——驱动开发篇
【正点原子I.MX6ULL】二、配置交叉编译工具链,编译U-boot和Linux内核源码