目录
配置交叉编译工具链
永久生效
测试交叉编译工具链
第一个交叉编译程序
开发板运行
LED第一个驱动
开发板下操作
执行测试程序
配置交叉编译工具链
交叉编译工具链用来在
Ubuntu
主机上编译应用程序,而这些应用程序是在
ARM
等其他平台上运行。
设置交叉编译工具主要是设置
PATH
,
ARCH
和
CROSS_COMPILE
三个环境变
量,下面介绍具体设置方法。
在本文档中,源码、交叉编译工具链都是存放于
/home/book
目录下;如果 你的目录不一样,请自行修改本节所讲述的命令。
永久生效
如需永久修改,请修改用户配置文件:
vim ~/.bashrc
在行尾添加或修改,加上下面几行
(
请把第
3
、
4
行合并为一行,有些
PDF
工
具无法正确复制甚至丢失“
-
”符号,请仔细对比
)
:
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/chl/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
设置完毕后,要执行
source ~/.bashrc
命令使其生效,并通过
arm-buildroot-linux-gnueabihf-gcc -v
命令来验证是否配置成功:
以上操作是设置 IMX6ULL Pro 版工具链的过程。
测试交叉编译工具链
echo $ARCH
echo $CROSS_COMPILE
执行以下命令测试工具链,结果见后图 2.17:
arm-buildroot-linux-gnueabihf-gcc -v
第一个交叉编译程序
git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git
cd 01_all_series_quickstart\04_嵌入式 Linux 应用开发基础知识\source\01_hello
arm-buildroot-linux-gnueabihf-gcc -o hello hello.c
cp hello /home/book/nfs_rootfs
开发板运行
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs/ /mnt
cp /mnt/hello .
./hello
file hello //查看文件类型
LED第一个驱动
注意:编译驱动时,要先编译内核,内核在IMX6ULLPRO单独编译kernel+dtb内核模块以及uboot_陈学弟的博客-CSDN博客y
led
驱动在
GIT
仓库里,由于前面已经克隆了这边就不需要重复了
目录位置如下:
01_all_series_quickstart/
05_
嵌入式
Linux
驱动开发基础知识
/
source/02_led_drv/02_led_drv_for_boards/100ask_imx6ull_src_bin
首 先 , 进 入
100ask_imx6ull_src_bin
目 录 , 修 改
Makefile
文 件
“
KERN_DIR
”为自己的内核所在路径。如图
5.7
红框所示,如果你的内核源码
不在此目录则根据你的实际情况进行修改:
由于我的路径不一样所以我进行了修改
修改后执行下面的指令
make clean
make
编译完成后会生成 100ask_led.ko ledtest 两个文件
此时,把这两个文件拷贝到
Ubuntu nfs
目录下备用:
cp 100ask_led.ko ledtest /home/book/nfs_rootfs //这里根据的自己的路径来安排
开发板下操作
注意开发板要和Ubantu能够ping通
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
cp /mnt/100ask_led.ko ./
cp /mnt/ledtest ./
安装驱动模块
insmod 100ask_led.ko
insmod 100ask_led.ko
安装完成后可以执行
lsmod
命令来查看是否安装成功,如图
5.9
所示:
执行测试程序
驱动模块安装成功后,就可以使用测试程序来控制
led
灯的状态,如图
5.12
所示,操作
led
灯时可同时观察开发板串口旁的灯是否有亮灭的变化。
[root@100ask:~]# chmod +x ./ledtest
[root@100ask:~]# ./ledtest
Usage: ./ledtest <dev> <on | off>
[root@100ask:~]# ./ledtest /dev/100ask_led0 on //打开 led0 灯
[root@100ask:~]# ./ledtest /dev/100ask_led0 off //关闭 led0 灯