Ingenic SoftWare Q&A
通用平台问题
环境搭建
Q: 烧录工具的LOCK_LEVEL 的密码是什么?
A: !@#
编译问题
Q: 虚拟机环境,编译sdk报下面的错误是什么原因?

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:

Q: 在一个终端编译工程执行了source ,lunch 命令之后换了终端直接make 编译为什么报错?
A: 在A 终端执行了source ,lunch 初始化了编译环境之后,这个编译环境只对当前的A 终端有效,新开的B 终端编译之前必须再次执行一遍source,lunch 的操作,只要这个终端不关(A,B 都是),就只执行一遍source,lunch 操作即可。
Q: 在工程编译的时候遇到了下面的报错,如何解决?

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

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: 启动报下面的错误,该如何解决?

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

Q: emmc 烧录成功但是无法启动,如何查问题?
A: 烧录工具有读flash数据存成文件的功能,多用于flash (nand ,emmc) 烧录完成之后不能正常启动原因分析。

高频问题
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: 根据实际需求,建议重点关注以下几点:
reset 管脚建议使用施密特类型。
输出管脚需根据驱动能力选择(如04,08.,12 等)。
I/O 通常带三态,设计中应包含
in、out、out_oen。时钟通常使用专用 pad,一般为两个脚,可外接 crystal。
模拟 pad 为特殊类型,需使用专门库。
是否需要
pull-up/pull-down电阻。封装与排布选择(
inline或staggered)需按实际设计匹配。是否需要
5V tolerance。是否有特殊 ESD 要求。
Q: 烧录镜像的时候出现下面报错是什么原因?怎么解决?

A: 这个错误是烧录的镜像超过了文件系统分区导致的,可以通过裁剪文件使镜像变小解决此问题,也可以通过加大分区来解决问题(一般文件系统的分区后面还有一个data 分区,加大文件系统的分区空间意味着data 分区会相应的减小。)
Q: 开发板开了adb 的服务,查看也有进程,但是pc 无法识别adb 设备?
A: 执行以下命令:
sudo adb kill-server sudo adb start-server
Q: 想要在烧录的阶段,把某个gpio 进行拉高或者拉低操作,具体应该怎么做?
A: 比如,想要在烧录过程中讲pe16 这个pin 拉高,可以在烧录工具的gpio add 界面做下面的添加测试:

其中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 选中如下配置:

驱动示例
X2000 LCD 驱动参考
MIPI DSI (4lane) 屏驱动参考:
module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-fw050.cMIPI DPI(rgb) 屏驱动参考:
module_drivers/drivers/video/fbdev/ingenic/fb_stage/displays/panel-st7282.cMIPI 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.cMIPI 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-ispMIPI 接口 sensor:
ov2735a.cDVP 接口 sensor:
ov2735b.c
X2500 Camera 驱动参考
当前 sensor 驱动路径:
module_drivers/drivers/media/i2c/ingenic-isp-v2MIPI 接口 sensor:
sc230ai.cDVP 接口 sensor:
gc2155.cBT1120 输入接口 sensor:
ov491.c
X2000 平台问题(Q&A)
Q: x2000 source lunch 的编译选项应该如何选择?
A: 需要按照下面步骤确认对应编译选项:
确认芯片型号:X2000 系列(X2000/X2000E/X2000H)还是 X2100。
确认板级:X2000 系列(X2000/X2000E/X2000H)应选择
halley5*,X2100 选择kale*,详见表 1。确认硬件版本:检查开发板底板丝印信息,硬件底板丝印信息与 lunch 的版本号保持一致,详见表 2。
确认存储介质:检查开发板焊接的存储介质是 nor、nand 还是 emmc,并与 lunch 的存储介质类型保持一致。
确认内核版本:如果编译 kernel 4.4.94,选择带
4.4.94的 lunch 编译选项;如果编译 kernel 5.10,选择带5.10的 lunch 编译选项。是否需要 OTA:需要则选择带
ota的 lunch 选项;不需要则选择不带ota的选项。
| 板级 | 版本号 | 存储介质 |
|---|---|---|
| X2000/X2000E/X2000H | halley5 | v10/v20/v30 + nor/nand/emmc |
| X2100 | kale | v10 + nor/nand/emmc |
表 1:软件 lunch 编译选项分解说明
| 芯片 | 底板丝印 | 版本号 |
|---|---|---|
| X2000/X2000E/X2000H | RD_X2000_HALLEY5_BASEBOARD_V1.X | v10 |
| X2000/X2000E/X2000H | RD_X2000_HALLEY5_BASEBOARD_V2.X | v20 |
| X2000/X2000E/X2000H | RD_X2000_HALLEY5_BASEBOARD_V3.X | v30 |
| X2100 | RD_X2100_KALE_BASEBOARD_V1_X | v10 |
表 2:硬件底板丝印对应软件版本号说明
下面以默认开发板 X2000 Halley5 为例:
芯片:X2000。
板级:halley5。
底板丝印:RD_X2000_HALLEY5_BASEBOARD_V3.0。
默认存储介质:nand。
内核版本:kernel 4.4.94。
不带 OTA 功能。
lunch 编译选项应选择:halley5.v30_nand_4.4.94-eng
X1600 平台问题(Q&A)
Q: x1600 source lunch 的编译选项应该如何选择?
A: 需要按照下面步骤确认对应编译选项:
确认芯片型号:X1600 系列(X1600/X1600E/X1600EN/X1600HN/X1600MN)还是 X1660 系列(X1660/X1660L)。
确认板级:X1600 系列按开发板选择
halley6*或panda*;X1660 系列选择x1660evb*,详见表 1。确认硬件版本:检查开发板底板丝印信息,硬件底板丝印信息与 lunch 的版本号保持一致,详见表 2。
确认存储介质:检查开发板焊接的存储介质是 nor、nand 还是 emmc,并与 lunch 的存储介质类型保持一致。
确认内核版本:如果编译 kernel 4.4.94,选择带
4.4.94的 lunch 编译选项;如果编译 kernel 5.10,选择带5.10的 lunch 编译选项。是否需要 OTA:需要则选择带
ota的 lunch 选项;不需要则选择不带ota的选项。
| 芯片 | 板级 | 版本号 | 存储介质 |
|---|---|---|---|
| X1600/X1600E/X1600EN/X1600HN/X1600MN | halley6 | v10 | nor/nand/emmc |
| X1600/X1600E/X1600EN/X1600HN/X1600MN | panda | v10 | nor/nand/emmc |
| X1660/X1660L | x1660evb | v10 | nand |
表 1:软件 lunch 编译选项分解说明
| 芯片 | 板级 | 底板丝印 | 版本号 |
|---|---|---|---|
| X1600/X1600E/X1600EN/X1600HN/X1600MN | halley6 | HALLEY6_BASEBOARD_V1.0 | v10 |
| X1600/X1600E/X1600EN/X1600HN/X1600MN | halley6 | HALLEY6_BASEBOARD_V2.0 | v10 |
| X1600/X1600E/X1600EN/X1600HN/X1600MN | halley6 | HALLEY6_BASEBOARD_V2.0.1 | v10 |
| X1660/X1660L | x1660evb | X1660_EVB_V2P0 | v10 |
表 2:硬件底板丝印对应软件版本号说明
下面以默认开发板 X1600 Halley6 为例:
芯片:X1600E。
板级:halley6。
底板丝印:HALLEY6_BASEBOARD_V1.0。
默认存储介质:nand。
内核版本:kernel 4.4.94。
不带 OTA 功能。
lunch 编译选项应选择:halley6.v10_nand_4.4.94-eng
X2500 平台问题(Q&A)
Q: X2500 source lunch 的编译选项应该如何选择?
A: 需要按照下面步骤确认对应编译选项:
确认芯片型号:X2500 系列(X2500/X2500a)。
确认板级:X2500 系列选择
hippo*,详见表 1。确认硬件版本:检查开发板底板丝印信息,硬件底板丝印信息与 lunch 的版本号保持一致,详见表 2。
确认存储介质:检查开发板焊接的存储介质是 nor、nand 还是 emmc,并与 lunch 的存储介质类型保持一致。
确认内核版本:如果编译 kernel 4.4.94,选择带
4.4.94的 lunch 编译选项;如果编译 kernel 5.10,选择带5.10的 lunch 编译选项。是否需要 OTA:需要则选择带
ota的 lunch 选项;不需要则选择不带ota的选项。
| 芯片 | 板级 | 版本号 | 存储介质 |
|---|---|---|---|
| X2500/X2500a | hippo | v10/v12 | nor/nand/emmc |
表 1:软件 lunch 编译选项分解说明
| 芯片 | 底板丝印 | 版本号 |
|---|---|---|
| X2500/X2500a | RD_X2500_HIPPO_BASEBOARD_(V1.0/V1.0.1/V1.1/V1.1.1) | v10 |
| X2500/X2500a | RD_X2500_HIPPO_BASEBOARD_V1.2 | v12 |
表 2:硬件底板丝印对应软件版本号说明
下面以默认开发板 X2500 Hippo 为例:
芯片:X2500。
板级:hippo。
底板丝印:RD_X2500_HIPPO_BASEBOARD_V1.2。
默认存储介质:emmc。
内核版本:kernel 4.4.94。
不带 OTA 功能。
lunch 编译选项应选择:hippo.v12_msc_4.4.94-eng
