X系列芯片通用Q&A

Ingenic SoftWare Q&A

通用平台问题

环境搭建

Q: 烧录工具的LOCK_LEVEL 的密码是什么?

A: !@#

编译问题

Q: 虚拟机环境,编译sdk报下面的错误是什么原因?

图片.png

A: 虚拟机内存不够了,需要扩大虚拟机内存,如果是虚拟机分配的硬盘空间不够是报类似“no space” 的错误。

Q: 编译时报错下方报错,如何解决?

make[3]: mkimage:命令未找到

A: pc 需要安装:

sudo apt-get install uboot-mkimage

Q: 编译时报"cmake not found" 错误,如何解决?

A: manhatton buildroot 有个问题需要注意: buildroot 编译的时候会检查系统环境上有没有cmake ,如果有并且版本大于等于3.10 的时候就不会去编译host-cmake,这个时候会造成Build.mk 的cmake 编译出错(因为build 里面依赖与out 路径下面指定的cmake),解决方式,buildroot 直接选中host-cmake:

图片.png

Q: 在一个终端编译工程执行了source ,lunch 命令之后换了终端直接make 编译为什么报错?

A: 在A 终端执行了source ,lunch 初始化了编译环境之后,这个编译环境只对当前的A 终端有效,新开的B 终端编译之前必须再次执行一遍source,lunch 的操作,只要这个终端不关(A,B 都是),就只执行一遍source,lunch 操作即可。

Q: 在工程编译的时候遇到了下面的报错,如何解决?

图片.png

A: log 报错已经有了提示,kernel 源码目录不干净,应该是在kernel 的目录下面执行过单独编译的命令,生成了中间文件,这个时候在退到工程的主目录,执行工程编译kernel 的命令:make kernel 就会报上面截图的错误,解决方式,按照log 的提示进入kernel 目录下面执行:make mrproper 命令即可。

启动报错

Q: 系统启动出现下面的报错,是什么原因?

图片.png

A: 这个是reserve memory 的报错,需要看对应的板级设备树reserve memory 节点的配置。

Q: nand flash 启动有 "oob error" 的错误打印是什么原因?

[ 0.314481] ingenic-sfc 13440000.sfc: /home/Data/users/HSystem/X2000/ingenic-linux-kernel4.4.94-x2000_v12-v4.0-20200724/kernel-4.4.94/drivers/mtd/devices/ingenic_sfc_v2/ingenic_sfc_nand.c ingenic_sfcnand_read_oob 474 : spi nand read oob error ,ret= -77 [ 0.337547] Bad eraseblock 1210 at 0x000009740000 [ 0.417978] Creating 4 MTD partitions on "sfc_nand": [ 0.423119] 0x000000000000-0x000000100000 : "uboot" [ 0.428910] 0x000000100000-0x000000900000 : "kernel" [ 0.444706] 0x000000900000-0x00000c800000 : "rootfs" [ 0.460576] 0x00000c800000-0x000010000000 : "userdata"

A: oob 是遇到了坏块,一定数量的oob 打印(不会增加)是正常的打印,由nand 的特性决定的,nand 有坏块处理,ecc检测及纠错机制。

Q: 启动报下面的错误,该如何解决?

图片.png

A: 可以尝试降一下cpu 的频率或者检查下code 的电压。

调试方法

Q: 如何确认 camera 当前支持格式?

A: 使用如下命令:

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

Q: 如何查看某个程序占用的内存?

A: 下面rss参数就是程序占用的内存:

cat /proc//status ps -o pid,rss,comm

Q: 如何查看当前的 GPIO 状态?

A: 通过以下命令查看:

find . -name "dump_gpio" cat /sys/devices/platform/apb/10010000.pinctrl/dump_gpio

Q: 如何查看系统的中断?

A: 使用以下命令:

cat /proc/interrupts

Q: 为何烧录过程中串口没有打印?

A: 烧录工具配置界面有修改串口配置,默认已经按照我们的开发板配置好,不用修改,如果硬件上改了串口,要按照实际的情况来配置串口:

图片.png

Q: emmc 烧录成功但是无法启动,如何查问题?

A: 烧录工具有读flash数据存成文件的功能,多用于flash (nand ,emmc) 烧录完成之后不能正常启动原因分析。

图片.png

高频问题

Q: 客户自己做的硬件,如何配合硬件修改debug 串口?

A: 修改debug 口有如下的几个位置,下面以x2000 为例,其他芯片平台类似: * (1) uboot:*

u-boot/include/configs/halley5.h

84 #define CONFIG_SYS_UART_INDEX           3    /*默认是uart3,根据实际修改此处*/ 85 #define CONFIG_BAUDRATE                 115200 173 #if (CONFIG_BOOTARGS_AUTO_MODIFY == 1) 174         #define BOOTARGS_COMMON LINUX_LOGLEVEL " console=ttyS3,115200 "    /*默认是uart3,根据实际修改此处*/ 175 #else 176         #define BOOTARGS_COMMON LINUX_LOGLEVEL " console=ttyS3,115200 mem=128M@0x0 "   /*默认是uart3,根据实际修改此处*/ 177 #endif
  • (2) kernel:*

kernel-4.4.94/arch/mips/boot/dts/ingenic/halley5_v30.dts

101 &uart3 { 102         status = "okay"; 103         pinctrl-names = "default"; 104         pinctrl-0 = ; 105 }; 106   /*此处根据实际的uart口以及硬件io 来配置*/

Q: pad的datatsheet里面列举了一些pad类型:施密特类型,加了上拉电阻的,加了下拉电阻的,OPEN DRAIN,请问根据什么依据来选择类型呢?请大神详细讲解一下呗?

A: 根据实际需求,建议重点关注以下几点:

  1. reset 管脚建议使用施密特类型。

  2. 输出管脚需根据驱动能力选择(如04,08.,12 等)。

  3. I/O 通常带三态,设计中应包含 in、out、out_oen。

  4. 时钟通常使用专用 pad,一般为两个脚,可外接 crystal。

  5. 模拟 pad 为特殊类型,需使用专门库。

  6. 是否需要 pull-up / pull-down 电阻。

  7. 封装与排布选择(inline 或 staggered)需按实际设计匹配。

  8. 是否需要 5V tolerance。

  9. 是否有特殊 ESD 要求。

Q: 烧录镜像的时候出现下面报错是什么原因?怎么解决?

图片.png

A: 这个错误是烧录的镜像超过了文件系统分区导致的,可以通过裁剪文件使镜像变小解决此问题,也可以通过加大分区来解决问题(一般文件系统的分区后面还有一个data 分区,加大文件系统的分区空间意味着data 分区会相应的减小。)

Q: 开发板开了adb 的服务,查看也有进程,但是pc 无法识别adb 设备?

A: 执行以下命令:

sudo adb kill-server sudo adb start-server

Q: 想要在烧录的阶段,把某个gpio 进行拉高或者拉低操作,具体应该怎么做?

A: 比如,想要在烧录过程中讲pe16 这个pin 拉高,可以在烧录工具的gpio add 界面做下面的添加测试: 

图片.png

其中10000 改成0x10000 代表对应的是io 的位置bit。

Q: 烧录阶段报下面的错误是什么原因?

    extend policy manager register     burner_x1000# magic=POLI     magic=DBG     magic=EFUS     magic=POLI     magic=SFC     id_manufactory = ff, id_device cd     id_manufactory = cd, id_device 70     ERROR!: don`t support this nand manufactory, please add nand driver, id_manufactory 0xcd id_device 0x70     ERR: sfc try id error!     ERR: jz_sfc_nand_init error!     cloner->ack = -5

A: 当前的flash 型号不支持。

Q: 今天发现连telnet时连不上,开机的时候telnetd是有的,占用23端口,我这边一连这个程序就退了,有什么需要增加的配置么?

A: kernel 选中如下配置:

图片.png

驱动示例

X2000 LCD 驱动参考

  • MIPI DSI (4lane) 屏驱动参考:module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-fw050.c

  • MIPI DPI(rgb) 屏驱动参考:module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-st7282.c

  • MIPI DBI typeC (SPI 接口) 屏驱动参考:module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-st7701s-rgb666.c、module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-tl040wvs03ct.c

  • MIPI DBI typeB(MCU 80 接口)SLCD 驱动参考:module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-kd035hvfbd037.c

X2000 Camera 驱动参考

  • 当前支持 sensor 驱动路径:kernel-4.4.94/module_drivers/drivers/media/i2c/ingenic-isp

  • MIPI 接口 sensor:ov2735a.c

  • DVP 接口 sensor:ov2735b.c

X2500 Camera 驱动参考

  • 当前 sensor 驱动路径:module_drivers/drivers/media/i2c/ingenic-isp-v2

  • MIPI 接口 sensor:sc230ai.c

  • DVP 接口 sensor:gc2155.c

  • BT1120 输入接口 sensor:ov491.c

X2000 平台问题(Q&A)

Q: x2000 source lunch 的编译选项应该如何选择?

A: 需要按照下面步骤确认对应编译选项:

  1. 确认芯片型号:X2000 系列(X2000/X2000E/X2000H)还是 X2100。

  2. 确认板级:X2000 系列(X2000/X2000E/X2000H)应选择 halley5*,X2100 选择 kale*,详见表 1。

  3. 确认硬件版本:检查开发板底板丝印信息,硬件底板丝印信息与 lunch 的版本号保持一致,详见表 2。

  4. 确认存储介质:检查开发板焊接的存储介质是 nor、nand 还是 emmc,并与 lunch 的存储介质类型保持一致。

  5. 确认内核版本:如果编译 kernel 4.4.94,选择带 4.4.94 的 lunch 编译选项;如果编译 kernel 5.10,选择带 5.10 的 lunch 编译选项。

  6. 是否需要 OTA:需要则选择带 ota 的 lunch 选项;不需要则选择不带 ota 的选项。

板级版本号存储介质
X2000/X2000E/X2000Hhalley5v10/v20/v30 + nor/nand/emmc
X2100kalev10 + nor/nand/emmc

表 1:软件 lunch 编译选项分解说明

芯片底板丝印版本号
X2000/X2000E/X2000HRD_X2000_HALLEY5_BASEBOARD_V1.Xv10
X2000/X2000E/X2000HRD_X2000_HALLEY5_BASEBOARD_V2.Xv20
X2000/X2000E/X2000HRD_X2000_HALLEY5_BASEBOARD_V3.Xv30
X2100RD_X2100_KALE_BASEBOARD_V1_Xv10

表 2:硬件底板丝印对应软件版本号说明

下面以默认开发板 X2000 Halley5 为例:

  1. 芯片:X2000。

  2. 板级:halley5。

  3. 底板丝印:RD_X2000_HALLEY5_BASEBOARD_V3.0。

  4. 默认存储介质:nand。

  5. 内核版本:kernel 4.4.94。

  6. 不带 OTA 功能。

lunch 编译选项应选择:halley5.v30_nand_4.4.94-eng

X1600 平台问题(Q&A)

Q: x1600 source lunch 的编译选项应该如何选择?

A: 需要按照下面步骤确认对应编译选项:

  1. 确认芯片型号:X1600 系列(X1600/X1600E/X1600EN/X1600HN/X1600MN)还是 X1660 系列(X1660/X1660L)。

  2. 确认板级:X1600 系列按开发板选择 halley6* 或 panda*;X1660 系列选择 x1660evb*,详见表 1。

  3. 确认硬件版本:检查开发板底板丝印信息,硬件底板丝印信息与 lunch 的版本号保持一致,详见表 2。

  4. 确认存储介质:检查开发板焊接的存储介质是 nor、nand 还是 emmc,并与 lunch 的存储介质类型保持一致。

  5. 确认内核版本:如果编译 kernel 4.4.94,选择带 4.4.94 的 lunch 编译选项;如果编译 kernel 5.10,选择带 5.10 的 lunch 编译选项。

  6. 是否需要 OTA:需要则选择带 ota 的 lunch 选项;不需要则选择不带 ota 的选项。

芯片板级版本号存储介质
X1600/X1600E/X1600EN/X1600HN/X1600MNhalley6v10nor/nand/emmc
X1600/X1600E/X1600EN/X1600HN/X1600MNpandav10nor/nand/emmc
X1660/X1660Lx1660evbv10nand

表 1:软件 lunch 编译选项分解说明

芯片板级底板丝印版本号
X1600/X1600E/X1600EN/X1600HN/X1600MNhalley6HALLEY6_BASEBOARD_V1.0v10
X1600/X1600E/X1600EN/X1600HN/X1600MNhalley6HALLEY6_BASEBOARD_V2.0v10
X1600/X1600E/X1600EN/X1600HN/X1600MNhalley6HALLEY6_BASEBOARD_V2.0.1v10
X1660/X1660Lx1660evbX1660_EVB_V2P0v10

表 2:硬件底板丝印对应软件版本号说明

下面以默认开发板 X1600 Halley6 为例:

  1. 芯片:X1600E。

  2. 板级:halley6。

  3. 底板丝印:HALLEY6_BASEBOARD_V1.0。

  4. 默认存储介质:nand。

  5. 内核版本:kernel 4.4.94。

  6. 不带 OTA 功能。

lunch 编译选项应选择:halley6.v10_nand_4.4.94-eng

X2500 平台问题(Q&A)

Q: X2500 source lunch 的编译选项应该如何选择?

A: 需要按照下面步骤确认对应编译选项:

  1. 确认芯片型号:X2500 系列(X2500/X2500a)。

  2. 确认板级:X2500 系列选择 hippo*,详见表 1。

  3. 确认硬件版本:检查开发板底板丝印信息,硬件底板丝印信息与 lunch 的版本号保持一致,详见表 2。

  4. 确认存储介质:检查开发板焊接的存储介质是 nor、nand 还是 emmc,并与 lunch 的存储介质类型保持一致。

  5. 确认内核版本:如果编译 kernel 4.4.94,选择带 4.4.94 的 lunch 编译选项;如果编译 kernel 5.10,选择带 5.10 的 lunch 编译选项。

  6. 是否需要 OTA:需要则选择带 ota 的 lunch 选项;不需要则选择不带 ota 的选项。

芯片板级版本号存储介质
X2500/X2500ahippov10/v12nor/nand/emmc

表 1:软件 lunch 编译选项分解说明

芯片底板丝印版本号
X2500/X2500aRD_X2500_HIPPO_BASEBOARD_(V1.0/V1.0.1/V1.1/V1.1.1)v10
X2500/X2500aRD_X2500_HIPPO_BASEBOARD_V1.2v12

表 2:硬件底板丝印对应软件版本号说明

下面以默认开发板 X2500 Hippo 为例:

  1. 芯片:X2500。

  2. 板级:hippo。

  3. 底板丝印:RD_X2500_HIPPO_BASEBOARD_V1.2。

  4. 默认存储介质:emmc。

  5. 内核版本:kernel 4.4.94。

  6. 不带 OTA 功能。

lunch 编译选项应选择:hippo.v12_msc_4.4.94-eng


评论交流 (共 0 条)