话说要选一块linux的开发板作为广播的硬件主板,经过硬件同学的一番对比,选的是正点原子RV1126 Linux核心板,首先必须给正点原子点赞,因为资料那是是相当齐全!老手新手都能找到想要了解的!
看到一堆的文档,是不是有点不知所措,莫慌,第一步,先是通过查看用户手册,熟悉这个板子,包括屏幕上的各种应用,都点一点,根据用户手册的测试例程,逐个的测试开发板的功能,有点感觉先!
连上开发板,关键的几个点,一是串口调试口,波特率是1500000,插上网线后,开发板程序支持dhcp,会获得一个动态ip,然后使用ssh工具即可远程到开发板,然后上传文件,下载日志什么的就都跟使用linux服务器没有什么差别了!
第二步是用户程序开发,这对经常写linux程序的同学来说并不陌生,只是编译程序从gcc换成了arm-linux-gnueabihf-gcc,如:
/opt/atk-dlrv1126-toolchain/bin/arm-linux-gnueabihf-gcc chrdevbaseApp.c -o chrdevbaseApp
第三步尝试驱动程序开发,驱动例程的源码在:
\【正点原子】RV1126 AI开发板资料(A盘)-基础资料\01、程序源码\01、程序源码\06、Linux驱动例程源码
驱动程序编写的文档在:
D:\project\RV1126\【正点原子】RV1126 AI开发板资料(A盘)-基础资料\10、文档教程(非常重要).zip\10、文档教程(非常重要)
尝试了第一个led驱动程序的例子,碰到几个问题记录下:
1、需要先编译sdk的kernel,所以先要参考上图的系统开发手册搭建开发环境!
2、修改例子中的Makefile:
#这个路径要修改为实际sdk的路径
KERNELDIR := /home/alientek/rv1126/kernel
CURRENT_PATH := $(shell pwd)
obj-m := chrdevbase.o
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
编译:
alientek@ubuntu:~/driver_test/sample/01_chrdevbase$ make ARCH=arm
make -C /home/alientek/rv1126/kernel M=/home/alientek/driver_test/sample/01_chrdevbase modules
make[1]: 进入目录"/home/alientek/rv1126/kernel"
CC [M] /home/alientek/driver_test/sample/01_chrdevbase/chrdevbase.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/alientek/driver_test/sample/01_chrdevbase/chrdevbase.mod.o
LD [M] /home/alientek/driver_test/sample/01_chrdevbase/chrdevbase.ko
make[1]: 离开目录"/home/alientek/rv1126/kernel"
3、ko文件要拷贝到/lib/modules/4.19.111/
[root@ATK-DLRV1126:~/driver_test]# cp chrdevbase.ko /lib/modules/4.19.111/
再在这个路径地下执行depmod
然后加载ko、运行测试程序!
[root@ATK-DLRV1126:/lib/modules/4.19.111]# modprobe chrdevbase
[root@ATK-DLRV1126:/lib/modules/4.19.111]# cd -
/root/driver_test
[root@ATK-DLRV1126:~/driver_test]# ./chrdevbaseApp /dev/chrdevbase 1
read data:kernel data!
[root@ATK-DLRV1126:~/driver_test]# ./chrdevbaseApp /dev/chrdevbase 2
[root@ATK-DLRV1126:~/driver_test]# ./chrdevbaseApp /dev/chrdevbase 1
read data:usr data!
[root@ATK-DLRV1126:~/driver_test]#