1,修改dts文件
build/boards/cv180x/cv1800b_milkv_duo_sd/dts_riscv/cv1800b_milkv_duo_sd.dts
添加如下内容:
&spi2 {
status = "okay";
/delete-node/ spidev@0; //两个选择,要么写这个,要么改st7789里的reg
st7789v: st7789v@0{
compatible = "sitronix,st7789v"; //驱动名
reg = <0>;
status = "okay";
spi-max-frequency = <48000000>;
spi-cpol;
spi-cpha;
rotate = <0>; //旋转,我不转就竖屏
fps = <60>;
rgb;
buswidth = <8>;
dc = <&porta 24 GPIO_ACTIVE_HIGH>; //配置连接dc线的管脚,对应上一节的pinmux配置
reset = <&porta 23 GPIO_ACTIVE_HIGH>; //配置连接reset线的管脚
debug = <0x0>;
};
};
2,修改
build/boards/default/dts/cv180x/cv180x_base.dtsi
spi2:spi2@041A0000 {
compatible = "snps,dw-apb-ssi";
reg = <0x0 0x041A0000 0x0 0x10000>;
clocks = <&clk CV180X_CLK_SPI>;
#address-cells = <1>;
#size-cells = <0>;
bias-pull-up; //添加这个地方,作用是上拉
};
3,打开内核驱动
首先我们需要需要知道用到的那些东西,这里我们用到了spi,fb_tft,st7789v等这些,我们需要去内核里面去使能这些驱动。
首先我们先配置好板子和环境变量:
export MILKV_BOARD=milkv-duo
source milkv/boardconfig-milkv-duo.sh
source build/milkvsetup.sh
defconfig cv1800b_milkv_duo_sd
然后在sdk目录直接执行
menuconfig_kernel
我们会进入如下界面
我们直接在这个节目按下/然后直接输入SPI搜索,看开关是否打开,可以直接按数字键盘的数字进入对应的选项进去看一下详细信息,如果没有则打开之
我们一共需要打开以下配置:
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_DESIGNWARE=y
CONFIG_SPI_DW_MMIO=y
CONFIG_SPI_SPIDEV=y
CONFIG_FB=y
CONFIG_FB_TFT=y
CONFIG_FB_TFT_ST7789V=y
所有项都检查完毕后就可以保存退出了
4,内核这边都配置完毕了,我们还需要配置一下管脚
u-boot-2021.10/board/cvitek/cv180x/board.c
在int board_init(void)
函数里面将:
//pinmux_config(PINMUX_SPI2);
cvi_board_init();
修改为
pinmux_config(PINMUX_SPI2);
PINMUX_CONFIG(SPINOR_CS_X, XGPIOA_24); //添加,这里的默认管脚功能并不是GPIO,修改之
PINMUX_CONFIG(SPINOR_MISO, XGPIOA_23); //添加,这里也一样
cvi_board_init();
接下来就可以执行以下命令进行编译了:
build_all
编译完成后使用命令:
find ./ -name "fb_st7789v.ko"
就可以看到已经生成了.ko文件了
5,现在我们可以把img烧录到内存卡里启动系统了,这里我们使用一个官方的工具查看一下我们使用的IO是否设置正确了。
一,下载工具包
二,通过通过scp或其他方式传到Duo上
scp cvi_pinmux.tar.gz root@192.168.42.1:/root/
在Duo终端中解压安装(会安装到/usr/bin目录下) :
tar zxf cvi_pinmux.tar.gz -C /
查看当前所有IO信息
cvi_pinmux -l
查询某个引脚当前的配置:
cvi_pinmux -r SD1_D0
设置某个引脚当前的配置:
cvi_pinmux -w SD1_D0/SPI2_SDI
到目前,已经可以在dev下面看到fb0设备了,spi节点也出来了。
但是用cvi_pinmux读取io状态发现还是普通io,并没有设置为spi,屏幕也无法控制,用万用表测量spi的io发现也是没有变化的,到这里就卡住了,不知道是那边出了问题,还请知道的同学告知一下,我会继续完成这个帖子。
本文转载自:https://bbs.elecfans.com/jishu_2368170_1_1.html,作者:陈仕祥