君正X1600E-HALLY6开发板开发记录
开发环境介绍:
主机:Windows 11
虚拟机:VMware17 Pro
虚拟机系统:Ubuntu20.04
开发板:HALLY6_BASEBOARD_V2.0
一、环境搭建:
常用的环境搭建参考另一篇文章: 全志T113-S3开发板开发记录
开发板环境搭建参考官方资料:
视频参考资料:Ingenic的个人空间-Ingenic个人主页-哔哩哔哩视频
二、具体开发步骤:
1.开启共享文件夹,将编译后的烧录文件拷贝到windows,挂载共享文件夹命令:
sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
2.使用串口进入开发板Linux终端,直接rx,tx接线就行,波特率默认3000000。
3.使用ssh登录开发板Linux终端,需要先打通网络,WiFi或以太网
参考文档,源码路径下:
doc\FAE文档\linux平台使用ssh登录开发板.pdf
doc\FAE文档\Halley6_X1600E_V2.0\Halley6_X1600E_v2.0_开发板WIFI使用说明.pdf
doc\FAE文档\Halley6_X1600E_V2.0\halley6_v2.0以太网配置方法.pdf
WiFi部分操作指令
#killall udhcpc (关掉打印udhcpc: sending discover)
#cp /etc/wpa_supplicant.conf /usr/data/ -arf
#vi /usr/data/wpa_supplicant.conf
#cat /usr/data/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1network={
ssid="YYC"
psk="12345678"
}# udhcpc -i wlan0 (不行的话就重启一下设备)
udhcpc: started, v1.31.1
udhcpc: sending discover
udhcpc: sending select for 192.168.0.5
udhcpc: lease of 192.168.0.5 obtained, lease time 604800
deleting routers
adding dns 192.168.1.1
4.使用NFS在线调试程序。参考链接:君正X2000NFS文件系统挂载
mkdir /tmp/nfs
mount -t nfs 192.168.0.167:/nfsroot /tmp/nfs
5.具体功能测试,命令测试,代码测试。
6.移植sqlite3数据库
下载文件:https://www.sqlite.org/2025/sqlite-autoconf-3510100.tar.gz
解压文件:
tar -zxvf sqlite-autoconf-3360000.tar.gz生成编译文件:
./configure --host=mips-linux-gnu --prefix=$PWD/install CC=/home/ubuntu/x1600/buildroot/buildroot/output/host/usr/bin/mips-linux-gnu-gcc --force
./configure=:这是许多开源软件包中的脚本,用于配置软件包的构建选项。
--prefix=:指定安装路径目录。CC=:指定交叉编译使用的C编译器路径。
-- force:覆盖上一次的配置构建选项
编译并安装:
make && make install查看安装后的文件:
ubuntu@ubuntu:~/x1600/third_party/sqlite3/sqlite-autoconf-3510100/install$ ls
bin include lib share查看sqlite3执行文件格式,可以看出依赖的是动态库:
ubuntu@ubuntu:~/x1600/third_party/sqlite3/sqlite-autoconf-3510100/install$ file bin/sqlite3
bin/sqlite3: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld.so.1, for GNU/Linux 2.6.32, not stripped
拷贝/bin/以及依赖的动态库/lib/libsqlite3.s* 到buildroot重新打包烧录cp bin/sqlite3 /home/ubuntu/x1600/buildroot/buildroot/output/target/usr/bincp lib/libsqlite3.s* /home/ubuntu/x1600/buildroot/buildroot/output/target/usr/lib开发板上验证sqlite3功能,成功如下
# sqlite3
SQLite version 3.51.1 2025-11-28 17:28:25
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>配置主机编译环境:
cp ./ /home/ubuntu/x1600/buildroot/buildroot/output/host/mipsel-buildroot-linux-gnu/sysroot/usr/ -r
7.其他常用库
buildroot中选择:
libcurl
mbedtls
paho-mqtt-c
ntp->ntpdate
保存配置:
cp .config ../../build/configs/buildroot/buildroot_wifi_common_defconfig
三、问题总结:
1.代码下载部分,ssh加密算法不兼容问题
报错:
stderr: Unable to negotiate with 119.136.25.25 port 29418: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.
解决方法:
sudo vim /etc/ssh/ssh_config
找到如下一行,将注释去掉:
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
2.代码下载部分,遇到部分仓库文件不存在
报错:
Please make sure you have the correct access rights
and the repository exists.
error: Cannot fetch demos/car_display from ssh://sz_halley2@119.136.25.25:29418/mirror/linux/demos/car_display
Fetching: 100% (1/1), done in 4.182s
Updating files: 100% (11659/11659), done.les: 35% (4194/11659)
Updating files: 100% (13826/13826), done.ootUpdating files: 82% (11452/13826)
Checking out: 9% (7/71) buildroot/buildroot_patcherror: Cannot checkout demos/car_display: ManifestInvalidRevisionError: revision master in demos/car_display not found
Checking out: 9% (7/71), done in 4.869s
error: in `sync`: revision master in demos/car_display not found
解决办法:
跳过失败的项目
./repo sync --fail-fast
3.编译部分,如果要用Linux5.10版本(不推荐,编译太慢了)
ubuntu@ubuntu:~/x1600/build$ make x1600e_halley6_nand_5.10_defconfig
..writing .config.in
make[1]: Entering directory '/home/ubuntu/x1600/build'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
/bin/sh: 1: flex: not found
make[3]: *** [scripts/Makefile.host:9: scripts/kconfig/lexer.lex.c] Error 127
make[2]: *** [Makefile:646: x1600_module_base_linux_sfc_nand_defconfig] Error 2
make[1]: *** [Makefile:140: set_kernel_configs] Error 2
make[1]: Leaving directory '/home/ubuntu/x1600/build'
make: *** [Makefile:156: x1600e_halley6_nand_5.10_defconfig] Error 2解决办法:
sudo apt install flex bison
4.ssh编译部分,目录存在,手动创建一个就行
rootfs_config/tools/mv_etc_ssh.sh /home/ubuntu/x1600/buildroot/buildroot/output/target
cp "rootfs_config/file/ssh/sshd_config" /home/ubuntu/x1600/buildroot/buildroot/output/target/save/etc/ssh/
cp: cannot create regular file '/home/ubuntu/x1600/buildroot/buildroot/output/target/save/etc/ssh/': No such file or directory
make[3]: *** [/home/ubuntu/x1600/buildroot/buildroot/../buildroot_patch/tools/post-buildroot.mk:65: all] Error 1
make[2]: *** [Makefile:772: target-finalize] Error 2
make[1]: *** [Makefile:84: _all] Error 2
make: *** [Makefile:92: all] Error 2
解决办法:
mkdir -p /home/ubuntu/x1600/buildroot/buildroot/output/target/save/etc/ssh/
5.使用SecureCRT登录ssh提示"与SSH2服务器的键盘交互身份验证失败",因为按照开发文档设置了登录密码,跳过就可以输密码了。
6.vscode无法输入中文,实测有效https://blog.csdn.net/weixin_43595452/article/details/148920572?fromshare=blogdetail&sharetype=blogdetail&sharerId=148920572&sharerefer=PC&sharesource=Yun_yichen&sharefrom=from_link
7.ota功能添加ota_config.in文件,结尾必须加一个换行(Linux的),官网文档没提这回事
遇到问题:
# sh /etc/ota_bin/network_ota_update.sh
try to get http://files.sunshineken.com/device/ota/board_test/ota_config.in
failed to get ota released version
ota: error解决办法:在Linux系统里面生成这个文件
echo current_version=1 >> ota_config.in
分析原因:通过查看文件的16进制数据可以知道,Linux下的换行是\n对应0a ,windows下的是\r\n对应0d0a
ubuntu@ubuntu:$ hexdump -C ota_config.in
00000000 63 75 72 72 65 6e 74 5f 76 65 72 73 69 6f 6e 3d |current_version=|
00000010 31 0a |1.|
00000012
8. rmem通常是linux系统为特定的模块预留的内存空间, 常用的是camera、lcd.
遇到问题:
# dmesg
[ 1577.284765] rmem: can't get enough mem, alloc 64 bytes from kernel
[ 1577.284787] rmem: can't get enough mem, alloc 64 bytes from kernel
[ 1577.288828] rmem: can't get enough mem, alloc 1843200 bytes from kernel解决:按照参考文档,反向添加
X1600 释放RMem中的内存以共享所有的内存空间 | Ingenic Docs
9.rtc影响开机启动时间
遇到问题:
[ 0.578976] RTC : wait_write_ready timeout!
[ 0.789149] RTC : wait_writable timeout!
[ 0.999236] RTC : wait_write_ready timeout!
[ 1.209127] RTC : wait_write_ready timeout!
[ 1.419206] RTC : wait_write_ready timeout!
[ 1.629275] RTC : wait_write_ready timeout!不需要rtc功能可由软件解决,需要rtc功能排查硬件:
硬件:RTC 时钟源(32 k)没起振 或 VBAT 掉电
软件直接注释掉:
~/x1600$ code ./kernel/kernel-x2000/module_drivers/drivers/rtc/rtc-ingenic.c
static void ingenic_rtc_writel(struct ingenic_rtc *dev,int offset, unsigned int value)
{int timeout = 0x100000;
mutex_lock(&dev->mutex_wr_lock);
// wait_write_ready(dev);
// writel(WENR_WENPAT_WRITABLE, dev->iomem + RTC_WENR);
// wait_write_ready(dev);
// while (!(ingenic_rtc_readl(dev,RTC_WENR) & WENR_WEN) && timeout--);
// if (timeout <= 0){
// pr_info("RTC : wait_writable timeout!\n");
// }
// wait_write_ready(dev);
// writel(value,dev->iomem + offset);
// wait_write_ready(dev);
mutex_unlock(&dev->mutex_wr_lock);
}
10.LCD st7701 RGB18bit ,初始化需要发送9位spi数据
打开文件:x1600/kernel/kernel-x2000/include/linux/spi/spi.h
添加函数:
static inline int
write_9bit(struct spi_device *spi, bool dc, u8 data)
{
u16 word = (dc ? 0x0100 : 0x0000) | data; // D/CX 放 bit8
struct spi_transfer t = {
.tx_buf = &word,
.rx_buf = NULL,
.len = 2, // 16-bit = 2 字节
.bits_per_word = 9, // 关键:9-bit 模式
.speed_hz = spi->max_speed_hz,
};
struct spi_message m;spi_message_init(&m);
spi_message_add_tail(&t, &m);return spi_sync(spi, &m);
}使用:
// 写命令(DC=0)
write_9bit(spi, 0, 0x36);// 写数据(DC=1)
write_9bit(spi, 1, 0xFF);
11.调试WiFi遇到mmc0寻不到设备,一些调试思路。
报错:
[ 1.942677] md_ingenic,mmc md_ingenic,mmc.1: no support for card's volts [ 1.942699] mmc0: error -22 whilst initialising SDIO card [ 1.946607] md_ingenic,mmc md_ingenic,mmc.1: no support for card's volts [ 1.946619] mmc0: error -22 whilst initialising MMC card [ 1.992620] md_ingenic,mmc md_ingenic,mmc.1: no support for card's volts [ 1.992635] mmc0: error -22 whilst initialising SDIO card [ 1.996547] md_ingenic,mmc md_ingenic,mmc.1: no support for card's volts [ 1.996558] mmc0: error -22 whilst initialising MMC card
解决:
硬件问题或者软件配置错误导致的,先看外围电路工作电压是否正常,再修改配置调试。
验证硬件是否通,第一个验证msc是否配置成功,第二个验证是否寻到sdio设备。
# ls /sys/class/mmc_host/
mmc0
# ls /sys/bus/sdio/devices/
mmc0:0001:1我实际配置的是msc1,这里看到的却是mmc0,君正平台这样是正常的。
其他功能总结:
更多推荐

所有评论(0)