韦东山视频

情到浓时终转凉″ 提交于 2020-01-17 06:57:42

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!