F1C100S自制开发板调试过程

疫情,等了好久板子终于到了。

我这里使用的是坑网大佬提供的tiny200开发包,用的芒果派R3配置文件

1,配置其的介质,我板子上用的是nor-spi-flash,所以需要在设备树里面屏蔽掉nand-flash相关的节点,否则启动会有错误。

2,配置屏幕,这里我被困扰好久,其实只需要在uboot里面配置好屏幕参数即可,其他的无需修改,我想歪了,去修改panel,改了好久好多参数都灭有效果,钻牛角尖了,最后看到坑网小伙伴评论:F1C100s如何初始化LCD引脚 ?24bit如何修改成18bit。RGB666如何修改成565.。。。。 / 全志 SOC / WhyCan Forum(哇酷开发者社区)

linux如果用drm驱动,那么就和uboot无关。
linux如果用simplefb驱动,那么就是用uboot初始化的

我才恍然大悟,直接去uboot里面修改屏幕参数就行了

这个时候,我又有疑问了,这些le,ri,up,参数是个什么玩意,百度后找到了如下资料:

U-boot中通过ENV设置显示设备(如LCD)参数的方法与格式_韩半仙的博客-CSDN博客

/******************************************************************
 * 解析结构体
 ******************************************************************/
struct ctfb_res_modes {
    int xres; /* 可见分辨率 */
    int yres;
    /* 时序: 所有值都以像素时钟为单位(当然除了像素时钟本身) */
    int pixclock; /* 像素时钟(单位:微秒) */
    int left_margin; /* 从行同步到图像左边沿的像素时钟数 */
    int right_margin; /* 从行同步到图像右边沿的像素时钟数 */
    int upper_margin; /* 从场同步到图像上边沿的行数 */
    int lower_margin; /* 从场同步到图像下边沿的行数 */
    int hsync_len; /* 行同步时间长度(像素时钟数) */
    int vsync_len; /* 场同步时间长度(行数) */
    int sync; /* see FB_SYNC_* */
    int vmode; /* see FB_VMODE_* */
};

 参数无效_lcd参数解释及刷新率计算,LCD时序_刘万祥ExcelPro的博客-CSDN博客

2d8dcc2ba9a563e576dd9864e7f994f2.png

4e4bba4f1f601a1a0910cbda331f3760.png

到这就知道参数怎么设置,以及参数的含义了。

最后看下测试效果:

3,通过控制台命令切换USB模式,参考下面帖子

主线Linux用shell命令切换 OTG(分享)tiny200/licheepi nano|zero均可以使用 / 全志 SOC / WhyCan Forum(哇酷开发者社区)​​​​​​

&usb_otg {
        dr_mode = "otg"; /* 三个可选项: otg / host / peripheral */
        status = "okay";
};

##切换到host模式:
# echo host > /sys/devices/platform/soc/1c13000.usb/musb-hdrc.1.auto/mode
# [  117.758152] phy phy-1c13400.phy.0: Changing dr_mode to 1
[  118.414817] usb 1-1: new high-speed USB device number 3 using musb-hdrc
[  118.598193] usb-storage 1-1:1.0: USB Mass Storage device detected
[  118.611789] scsi host0: usb-storage 1-1:1.0
[  119.686198] scsi 0:0:0:0: Direct-Access     Mass     Storage Device   1.00 PQ: 0 ANSI: 0 CCS
[  119.703976] sd 0:0:0:0: [sda] 3842048 512-byte logical blocks: (1.97 GB/1.83 GiB)
[  119.725260] sd 0:0:0:0: Attached scsi generic sg0 type 0
[  119.739844] sd 0:0:0:0: [sda] Write Protect is off
[  119.771819] sd 0:0:0:0: [sda] No Caching mode page found
[  119.777288] sd 0:0:0:0: [sda] Assuming drive cache: write through
[  119.801571]  sda: sda1 sda2 sda3
[  119.817224] sd 0:0:0:0: [sda] Attached SCSI removable disk

#
##切换到device模式:
# echo peripheral > /sys/devices/platform/soc/1c13000.usb/musb-hdrc.1.auto/mode
[  123.880272] phy phy-1c13400.phy.0: Changing dr_mode to 2
# [  123.890905] usb 1-1: USB disconnect, device number 3

4,移植wifi

        这段时间把wifi移植了一下,我买了几个rtl8189es模块,自己作了一个tf卡接口,直接插到板子上的tf卡接口上去。

        驱动的话我从github上找了一个可用的,克隆到自己的仓库了,

测试下来延迟挺大的,不过没有加天线,自己随便画的,暂时能用就行。

5,今天搞了下触摸,拆的屏幕,自带触摸芯片是GT911,sdk里面的分辨率是800x480的,弄上去触摸到的位置有偏差,想到应该是触摸芯片的配置文件不对,查看源码,发现是驱动在创建的时候写入了一个配置文件,名字是goodix_911_cfg.bin,发现就是一个配置数组,数组内容下面这个链接有介绍,至此我们就直接简单粗暴修改下尺寸,但是发现不行,报错。

http://www.doczj.com/doc/bb14276644.html

#include <stdio.h>

unsigned char GT911_CFG_TBL[] =
{
0x42, 0xE0, 0x01, 0x10, 0x01, 0x0A, 0x3D, 0x00, 0x01, 0x08, 0x28, 0x08, 0x5A, 0x46, 0x03, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1A, 0x1E, 0x14, 0x89, 0x2A, 0x09, 0x57, 0x5C,
0xB5, 0x06, 0x00, 0x00, 0x00, 0x02, 0x01, 0x1D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x46, 0x82, 0x94, 0xC5, 0x02, 0x07, 0x00, 0x00, 0x04, 0x96, 0x4A, 0x00, 0x85,
0x54, 0x00, 0x77, 0x5F, 0x00, 0x6A, 0x6C, 0x00, 0x5F, 0x7A, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x10, 0x12, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x04, 0x06, 0x08, 0x0A, 0x0F, 0x10, 0x12, 0x16, 0x18, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22,
0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x01 
};


unsigned char calcChecksum(unsigned char *buf, unsigned char len) {
  unsigned char ccsum = 0;
  for (unsigned char i = 0; i < len; i++) {
    ccsum += buf[i];
  }
  return (~ccsum) + 1;
}

int main() {
	
	unsigned char sub = 0;
	sub = calcChecksum(GT911_CFG_TBL,sizeof(GT911_CFG_TBL)-2);
	printf("sub:%x\n",sub);

	return 0;
}

下一步就是调试摄像头了。 

如何查看摄像头支持的格式

Ubuntu 下如何测试 USB 摄像头支持的分辨率、压缩格式,并使用 OpenCV 按正确的格式读取出来?_斜雨踏歌的博客-CSDN博客_usb摄像头输出格式

使用命令行拍照测试

1,查询摄像头支持的格式和分辨率

v4l2-ctl -d /dev/video1 --list-formats-ext

2,设置格式

media-ctl --set-v4l2 '"ov2640 0-0030":0[fmt:YUYV8_2X8/640x480]'

3,开始拍照

fswebcam -d /dev/video0 --no-banner -r 640x480 -S 10 1.jpg

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值