页次: 1
在makefile中设置了buildroot编译出来的交叉编译链,但是用这个编译链编译驱动会报错
KERNEL_DIR=/home/test/lc/buildroot/output/build/linux-5.4.99/ #内核源码路径
ARCH=arm64
CROSS_COMPILE=/home/test/lc/buildroot/output/host/bin/arm-buildroot-linux-gnueabi
export ARCH CROSS_COMPILE
obj-m := inwiegand.o
all:
$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) modules
.PHONE:clean
clean:
$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) clean
报错信息如下
test@lc-es-vm:~/lc/drivers/wiegend_driverw-master/driver$ make
make -C /home/test/lc/buildroot/output/build/linux-5.4.99/ M=/home/test/lc/drivers/wiegend_driverw-master/driver modules
make[1]: Entering directory `/home/test/lc/buildroot/output/build/linux-5.4.99'
CC [M] /home/test/lc/drivers/wiegend_driverw-master/driver/inwiegand.o
arm-buildroot-linux-gnueabi-gcc.br_real: 错误:unrecognized command line option ‘-mgeneral-regs-only’
make[3]: *** [/home/test/lc/drivers/wiegend_driverw-master/driver/inwiegand.o] 错误 1
make[2]: *** [/home/test/lc/drivers/wiegend_driverw-master/driver] 错误 2
make[1]: *** [sub-make] 错误 2
make[1]: Leaving directory `/home/test/lc/buildroot/output/build/linux-5.4.99'
make: *** [all] 错误 2
如果不是用这个编译链,应该用哪个呢,我buildroot里没有设置使用外部工具链。
奇怪的是我把这个驱动放到内核目录里,buildroot就可以正常编译通过。
问题已经解决,是我的makefile里cpu架构没改,还是64位!
1)内核设备树配置
/home/test/lc/buildroot/board/widora/mangopi/r3/devicetree/linux/devicetree.dts
rtp@48 {
compatible = "ti,tsc2007";
reg = <0x48>;
interrupt-parent = <&pio>;
interrupts = <4 12 IRQ_TYPE_EDGE_FALLING>;
gpios = <&pio 4 12 GPIO_ACTIVE_LOW>;
pendown-gpio = <&pio 4 12 GPIO_ACTIVE_LOW>;
ti,x-plate-ohms = <660>;
wakeup-source;
status = "okay";
};
2)内核配置
make linux-menuconfig
Device Drivers --->
Input device support --->
[*] Touchscreens --->
<*> TSC2007 based touchscreens
3)buildroot配置
在buildroot目录下输入menu menuconfig
Target packages --->
Libraries --->
Hardware handling --->
[*] tslib
4)重新构建内核
./rebuild-kernel.sh
5)在开发板命令终端输入:
vi /etc/profile
6)在最后一行插入,这一步应该可以在编译之前修改文件系统里的文件
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
7)校准触摸屏
系统重新运行起来之后,在开发板命令终端输入:ts_calibrate。然后在屏幕上操作校准触摸屏。此时,显示屏模组驱动已经全部完成。
8)测试触摸屏,在开发板命令终端分别输入:ts_print、ts_test等命令,会在屏幕上或者命令终端看到不同的效果。
1、buildroot常用make 命令
常用命令
意义
make menuconfig buildroot菜单
make uboot-menuconfig
uboot菜单
make linux-menuconfig
linux菜单
make busybox-menuconfig
busybox菜单
make 编译buildroot
make linux-rebuild
重新编译linux
make uboot-rebuild
重新编译uboot
make busybox-rebuild
重新编译busybox
make 软件包-rebuild
对于任何软件包编译
make clean 清除编译
make distclean 清除编译以及配置
原文链接:https://blog.csdn.net/qq_20017379/article/details/127154287
2、CherryPi-F1C200S 樱桃派改成从spi-nand启动,默认的工程是从sd卡启动
/home/test/lc/buildroot/board/widora/mangopi/r3/devicetree/linux/devicetree.dts
修改启动参数
chosen {
#address-cells = <1>;
#size-cells = <1>;
ranges;
//for NAND or Nor
bootargs = "console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3";
//for sd-card
//bootargs = "console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3";
页次: 1