当前位置:首页 > 技术 > LINUX > 正文内容

milkv-duo设备上NS2009 驱动配置

Watrt3个月前 (08-14)LINUX3050

NS2009设备中断使用的是GPIOE(GPIO4)的第26脚。这里需要修改Uboot启动配置为GPIO

修改/home/watrt/duo-buildroot-sdk/build/boards/cv180x/cv1800b_milkv_duo_sd/u-boot/cvi_board_init.c文件添加引脚配置

int cvi_board_init(void)
{
	// sensor mclk reset
	PINMUX_CONFIG(PAD_MIPIRX0P, CAM_MCLK0); // Camera MCLK0
	PINMUX_CONFIG(PAD_MIPIRX1N, XGPIOC_8);  // Camera Reset

	// all default gpio
	PINMUX_CONFIG(SD0_PWR_EN, XGPIOA_14);    // Duo Pin 19
	PINMUX_CONFIG(SPK_EN, XGPIOA_15);        // Duo Pin 20
	PINMUX_CONFIG(SPINOR_MISO, XGPIOA_23);   // Duo Pin 21
	PINMUX_CONFIG(SPINOR_CS_X, XGPIOA_24);   // Duo Pin 22
	PINMUX_CONFIG(SPINOR_SCK, XGPIOA_22);    // Duo Pin 24
	PINMUX_CONFIG(SPINOR_MOSI, XGPIOA_25);   // Duo Pin 25
	PINMUX_CONFIG(SPINOR_WP_X, XGPIOA_27);   // Duo Pin 26  这里上NS2009的中断脚
	PINMUX_CONFIG(SPINOR_HOLD_X, XGPIOA_26); // Duo Pin 27
	PINMUX_CONFIG(PWR_SEQ2, PWR_GPIO_4);     // Duo Pin 29

	// ADC pins set to gpio
	PINMUX_CONFIG(ADC1, XGPIOB_3);           // ADC1
	PINMUX_CONFIG(USB_VBUS_DET, XGPIOB_6);   // ADC2

	// I2C0
	PINMUX_CONFIG(IIC0_SCL, IIC0_SCL);
	PINMUX_CONFIG(IIC0_SDA, IIC0_SDA);

	// I2C1
	PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA);
	PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL);

	// PWM
	PINMUX_CONFIG(SD1_D2, PWM_5);
	PINMUX_CONFIG(SD1_D1, PWM_6);

	// UART 4
	PINMUX_CONFIG(SD1_GPIO1, UART4_TX);
	PINMUX_CONFIG(SD1_GPIO0, UART4_RX);
	

	// SPI
	PINMUX_CONFIG(SD1_CLK, SPI2_SCK);
	PINMUX_CONFIG(SD1_CMD, SPI2_SDO);
	PINMUX_CONFIG(SD1_D0, SPI2_SDI);
	PINMUX_CONFIG(SD1_D3, SPI2_CS_X);
	
	pinmux_config(PINMUX_SPI2);

	return 0;
}

添加设备树/home/watrt/duo-buildroot-sdk/build/boards/cv180x/cv1800b_milkv_duo_sd/dts_riscv/cv1800b_milkv_duo_sd.dts:

&i2c0 {
        status = "okay";
        ns2009: ns2009@48 {
                //compatible = "nsiway,ns2009";
                compatible = "ti,tsc2007";
		ti,x-plate-ohms = <180>;
		interrupt-parent = <&porte>;
		interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
		gpios = <&porte 26 GPIO_ACTIVE_HIGH>;
                reg = <0x48>;
        };
};

中断设备修改/home/watrt/duo-buildroot-sdk/build/boards/default/dts/cv180x_riscv/cv180x_base_riscv.dtsi:

gpio4: gpio@05021000 {
		porte: gpio-controller@4 {
			interrupt-controller;
			interrupts = <70 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-parent = <&plic0>;
			#interrupt-cells = <2>;
		};
	};

修改设备树cv180x_base_riscv.dtsi文件添加:

#interrupt-cells = <2>;  这里如果不添加设备的中断会失败

然后在buildroot添加tslib库的支持

Target packages  --->
	Libraries  --->
		Hardware handling  --->
			[*] tslib

启动后运行:

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


校准触摸屏

ts_calibrate


分享给朋友:

相关文章

基于 debootstrap 和 busybox 构建 mini ubuntu

基于 debootstrap 和 busybox 构建 mini ubuntu

最近的工作涉及到服务器自动安装和网络部署操作系统,然后使用 ansible 和 saltsatck 进行配置并安装 openstack 。难点在于服务器的自动安装,由于不单只是通过 PXE 安装服务器,还需要能够安装时进行分区、配置网卡等工作,因此需要在开始安装前,必须先收集服务器的硬件信息。调研了一下目前的开源项目中,提供此类功能的有 tinycorelinux 、 puppet razor-el-mk 可做类似的工作。tinycorelinux 是个很好的工具,整个系统在 PXE 之后在内存...

使用buildroot构建根文件系统

使用buildroot构建根文件系统

使用buildroot构建根文件系统buildroot可用于构建小型的linux根文件系统。大小最小可低至2M,与内核一起可以放入最小8M的spi flash中。buildroot中可以方便地加入第三方软件包(其实已经内置了很多),省去了手工交叉编译的烦恼。下载安装首先安装一些依赖,比如linux头文件:apt-get install linux-headers-$(uname -r)然后下载安装:wget https://buildroot.org/do...

Deepin Linux修复grub引导

Deepin Linux修复grub引导

环境说明:一直使用的是Win7+Deepin 15.5。后来全新安装了Win 10,需要修复grub第一步:在Windows操作系统下使用深度官方的U盘启动制作器 制作U盘第二步:开机U盘启动进入Deepin linux安装界面,待进入到安装界面选择语言时,按住Crtl+Alt+F2/F1进入Linux tty终端。并执行以下命令完成修复sudo fdisk -l/*根据查询结果确定deepin 的/目录和/boot目录所在的分区编号*/sudo mount&nbs...

荔枝派Nano 全流程指南

荔枝派Nano 全流程指南

u-boot 初体验安装交叉编译链首先需要安装交叉编译链:# 此处为获取7.2.1版本,您可获取其他版本或者通过链接直接下载 wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz tar -vxJf gcc-li...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。