> 文章列表 > IMX6ULLPRO交叉编译第一个APP和第一个led驱动

IMX6ULLPRO交叉编译第一个APP和第一个led驱动

IMX6ULLPRO交叉编译第一个APP和第一个led驱动

目录

配置交叉编译工具

永久生效

测试交叉编译工具链  

第一个交叉编译程序 

开发板运行

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 $ARCHecho $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 cleanmake 

 编译完成后会生成 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 灯