4.1 KiB
imx6 侧(atsc_app)
源码
E:\Xilinx_design\smod\SMOD_ATSC\my_exciter\imx6\src\atsc_app(Makefile 在这一层):
| 目录 | 内容 |
|---|---|
main.c |
起线程:fpga_upgrade_task、tcp_task、web、lcd、gps… |
bsp/ |
板级:i2c_drv.c、fpga.c(FPGA 寄存器读写)、eeprom.c(配置)、dac38j82.c、dpd_proc.c、isys_config.c |
talise/, adrv9009/, adi_hal/ |
ADI ADRV9009 驱动 |
sonytuner/ |
Sony CXD2878 + FREIA(CXD6821) 解调驱动(从 EMV9.3 移植,见 PR04) |
task/ |
upgrade.c(软件包升级)、tcp_task.c、iweb_task.c、tsoip.c、iq_rx.c |
inc/ |
头文件;fpga.h 里 FPGA_UPGRADE_I2C_REG_ADDRES = 0xE0 |
同级还有 imx6/src/web/(cgi + www 页面,含 upload.cgi 远程升级入口)。
交叉编译
工具链在 VM bowei@192.168.223.128(密码见 ~\skills_env.md 的 CROSS_VM_PASS):
/opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
流程(scripts/imx6_app.py build 已封装):
- Windows 侧从 git 打包源码 —— 用
HEAD而不是工作区,这样构建的东西可追溯:git -C my_exciter archive --format=tar -o app.tar HEAD:imx6/src/atsc_app(约 13 MB) - SFTP 上传到 VM,解到
~/atsc_head_build(一个干净目录;不要碰~/atsc_tsoip_build/之类的旧目录) bash -lc 'source <envsetup>; cd ~/atsc_head_build && make'→ 产出imx_atsc_app(~2.9 MB ELF)- SFTP 取回 Windows
VM 的 sshd 是现代版本,paramiko 5 / OpenSSH 都能连。若报
kex_exchange_identification: Connection closed,是 VM 的 sshd 挂了,请用户 sudo systemctl restart sshd。
部署到设备
设备 192.168.1.143,用户 root(密码见 ~\skills_env.md 的 SMOD_SSH_PASS)。它的 SSH 是老 dropbear,有两个坑:
-
算法太老:paramiko 5 会报
unknown cipher/no acceptable host key。 要用 paramiko 2.12(有 TripleDES / aes-cbc / ssh-rsa):python -m pip install --target <dir> paramiko==2.12.0,然后PYTHONPATH=<dir>跑。 命令行 ssh 则加-o HostKeyAlgorithms=+ssh-rsa。 -
没有 SFTP 子系统:
open_sftp()直接EOF during negotiation。传文件走 exec channel:ch = client.get_transport().open_session() ch.exec_command("cat > /aw/anywave/app/imx_atsc_app_head") ch.sendall(open(local_bin, "rb").read()) ch.shutdown_write(); assert ch.recv_exit_status() == 0(另一条老路是 SSH 反向端口转发 + 设备侧
wget,见 Task04;现在没必要了。)
部署顺序 —— 先落一个新名字,验证 md5,再覆盖 active,这样传输失败不会毁掉能跑的 app:
cat > /aw/anywave/app/imx_atsc_app_head
chmod 755 imx_atsc_app_head
md5sum 对比
cp -a imx_atsc_app_head imx_atsc_app # 覆盖 active
scripts/imx6_app.py deploy 就是这个顺序。已知好用的备份是 imx_atsc_app.bak_pre_rx1。
改完 app 要冷启动(断电重启,遵守上电时序)让 rc.local 拉起新进程。
观察设备
- 日志:
/var/module_log/imx_atsc_app.log。健康标志:TALISE_radioOn、fb init state ok、fpga[0xBB]=0x03(sync=1 / tvalid=1)。imx6_app.py log直接拉。 - 配置:
/aw/anywave/cfg/exc_cfg.conf,[BLK_SYS_PARA] reg50选输入源 ——0=Tuner,1=TS,2=EAS,3=TSoIP。 - 网页:
http://192.168.1.143(sys_rf.html、sys_ts.html、sys_set.html、status_info.html、log_output.html、以及远程升级的upload.cgi)。 - 串口控制台(COM 号见
~/fpga_imx6_flow.json的ports.imx6,逐机而异、不入库)能用,但会自动登出、比较飘。优先走网络 SSH读日志和跑命令。 - 直接读 FPGA 寄存器可以
i2cget,但它会和 app 抢总线;带调试 ILA 的 bit 下更不可靠。 以 app 日志为准,或者临时停掉 app。
已知不能用的构建
设备上的 imx_atsc_app.rx1、以及任何 M=2 / lane 0x04 的变体会打断 TX。
git HEAD 的版本是 RX1-on-framerA(M=4 / lane 0x03 / RX1RX2)+ TX 正常的已知好版本。