1 环境搭建
交叉编译工具链安装路径:/opt/fsl-imx-x11/4.1.15-2.1.0
GCC编译器名称:arm-poky-linux-gnueabi-gcc
开发板挂载网络文件系统nfs:mount -t nfs -o nolock,vers=3 192.168.8.201:/home/book /mnt
把ubuntu服务器/home/book目录挂在为/mnt目录
每次开机后需要是能环境变量%CC
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
2 编译操作
编译C程序:
$CC main.c -o main
arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi -o hello hello.c
制作、使用动态库:按照韦东山视频教程方法一直报错。
3 编译驱动程序操作
编译第一个驱动程序《01_hello_drv》,其中makefile需要进行适应性修改
KERN_DIR = /home/book/linux
all:
make -C $(KERN_DIR) M=`pwd` modules
$(CC) -o hello_drv_test hello_drv_test.c
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
rm -f hello_drv_test
obj-m += hello_drv.o
其中,$(CROSS_COMPILE)gcc -o hello_drv_test hello_drv_test.c
修改为$(CC) -o hello_drv_test hello_drv_test.c
,由于环境搭建的时候source语句已经把CC环境变量设置好了,如下文所示
CC=arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysrooky-linux-gnueabi
4 装载驱动程序
insmod hello_drv.ko // 安装驱动程序
cat /proc/devices//查看驱动程序
以下是返回值:
Character devices:
1 mem
4 /dev/vc/0
4 tty
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
29 fb
81 video4linux
89 i2c
90 mtd
108 ppp
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
207 ttymxc
216 rfcomm
226 drm
248 hello
249 ttyLP
250 iio
251 watchdog
252 ptp
253 pps
254 rtc
Block devices:
1 ramdisk
259 blkext
7 loop
8 sd
31 mtdblock
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
主设备号:248
lsmod//查看内核中加载的驱动程序
返回值:
Module Size Used by
hello_drv 3238 0
mx6s_capture 14876 0
ov5640_camera 19965 0
ls /dev/hello -l//查看主设备节点
返回值:
crw------- 1 root root 248, 0 Sep 13 22:01 /dev/hello
ls /dev/100ask_led* -l//查看子设备节点
crw------- 1 root root 248, 0 Sep 13 21:51 /dev/100ask_led0
crw------- 1 root root 248, 1 Sep 13 21:51 /dev/100ask_led1
卸载驱动程序
rmmod hello_drv
来源:CSDN
作者:xiaoaojianghu09
链接:https://blog.csdn.net/xiaoaojianghu09/article/details/103554511