合集链接:
https://whycan.com/t_7281.html
最近JLC出货太慢了,焦急地等待了7天,PCB终于到手了。连夜焊了一块板子出来(别问我为神马只焊一片,问就是经费燃烧殆尽了)
大家看见没,我手欠,曾经为了展现我高超的焊接技术,把LED的线路割断了,飞线到cpu另一个引脚测试所留下的案发现场
正题开始:
首先咱们不可能手撕代码,所以ctrl+c ctrl+v 下载(V3s/V3x/S3/S3L/R11通吃)小智V3x开发板smallwitpi lite u-boot/linux/buildroot测试中的文件。我这里再发一遍吧
br2_v3_uart0_pb8_pb9-spinor-tfcard-20211026132800.tgz
1 克隆buildroot:
$ git clone https://github.com/buildroot/buildroot -b 2020.02.4
2 解压刚下载的文件
$ tar xvf br2_v3_uart0_pb8_pb9-spinor-tfcard-20211026132800.tgz
3 将解压出来的文件夹拷贝合并到buildroot中
4 编译
$ cd buildroot
$ make br2_smallwitpi_lite_v3_ddr3_uart0_pb8_pb9_tfcard_spinor_defconfig
中途可能某些包下载不下来,可以手动复制链接下载源码包到buildroot的dl目录下
5 烧录到SD卡
$ dd if=output/images/firmware-smallwitpi-lite-v1-sdcard.img of=/dev/sdx
注意/dev/sdx为你的SD卡路径,请谨慎操作这一步!!!
6 插上串口线上电就能看到系统输出的信息
这时由于没有移植任何驱动,板上设备是没有工作的,这里先简单弄个LED驱动把。
看MIPI-V3x原理图可知,LED接到了PE22引脚上,并且是高电平点亮。
首先修改增加LED驱动,第一件事就是看设备树中PE22有没有被占用,小智使用的设备树文件是buildroot/output/build/linux-5.4.70/arch/arm/boot/dts/devicetree.dts
查看此文件发现uart1占用了PE22口,所以修改uart1节点status = "ok";改为status = "disabled";
&uart1 {
pinctrl-0 = <&uart1_pe_pins>;
pinctrl-names = "default";
status = "disabled";
然后在devicetree.dts的backlight: backlight 节点后面添加LED设备节点
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm 0 1000000 1>;
brightness-levels = <0 4 8 16 32 64 128 160 200 255>;
default-brightness-level = <6>;
status = "okay";
};
leds {
compatible = "gpio-leds";
green_led {
label = "green";
linux,default-trigger = "heartbeat"; //默认设置为系统心跳灯
gpios = <&pio 4 22 GPIO_ACTIVE_HIGH>; /* PE22 */
};
};
修改完成后回到buildroot目录下重新编译一下
$ rm buildroot/output/build/linux-5.4.70/.stamp_built
$ rm buildroot/output/build/linux-5.4.70/.stamp_target_installed
$ make
编译完成后将buildroot/output/images/devicetree.dtb文件拷贝到SD卡的fat分区上
至此,上电就能看到led在闪烁了
接下来讲一下linux下如何操作这个GPIO
刚刚我们添加的led设备节点在/sys/class/leds/green目录下,需要手动操作GPIO,先把/sys/class/leds/green/trigger方式改为none
# echo none > trigger
然后点灯
# echo 1 > brightness
关灯灯
# echo 0 > brightness
最近编辑记录 leefei (2021-10-29 00:37:42)
离线
教程中的截图正在更新中。。。。
离线