s5pv210(3) — 编译环境文章中我们能够编译一个固件烧写到板子中运行,本章我们解锁一个更便捷的启动方式。
s5pv210的ROM支持UART/USB下载,需要在虚拟机上编译一个DNW驱动。GitHub上有一份USB的DNW的驱动源码。下载后解压,进入执行,发现编译错误:
经过和这份Qunero/dnw4linux驱动对比,修改文件,注释掉这一行,再次编译即正常。
硬件配置:
- 选择USB启动模式
- 连接OTG到电脑
- 长按POWER开机,此时电脑会检测到有USB接入,松开POWER键USB设备会消失
一直按着POWER键,将设备连接至虚拟机。
使用查看系统日志,其中末尾的地方有我们刚刚连接USB的日志。可以看到USB的厂商ID为,产品ID为。
- USB ID数据定义在文件中,打开这个文件发现它已经定义了 我们就不用添加了。
- 修改文件,参考Linux udev规则编写,在文件中每行末尾增加,再次安装覆盖,这样设备加载时的用户组就是了。
参考[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)可知S5PV210的默认启动位置是,所以修改,将修改为。
修改完毕后编译,然后执行安装即可,涉及到驱动安装需要管理员权限。
安装完毕后,再次使用虚拟机连接设备,使用查看日志,可看到系统已经识别设备为。
使用可以看到设备文件。
查看本地用户的用户组,并添加本地用户到用户组。
至此本地用户可以直接访问设备了,也即不需要使用提权了。
工程的链接脚本需要修改 的地址以及的大小,如下。
链接脚本修改后重新编译,编译的bin文件可直接使用程序下载,也即DNW下载需要16字节文件头,但不关心文件头的数据。将bin使用程序处理,得到的镜像仍可用于SD卡烧录。
虚拟机连上设备后,执行即可完成下载,下载过程中需要按着电源键,下载完成后程序会运行起来,此时可以松开电源键,若需要重新下载则需要复位板卡重来。
DNW下载很方便但是每次下载需要先复位,然后按住POWER按键,下载的程序运行后才能松开POWER按键,考虑做个自动下载控制电路。开发板使用的是RS232 9针接口,实际通信只用到Tx/Rx两根线,我们可以考虑使用 两个信号线控制板卡复位以及POWER保持。
- RS232是±12V电平通信,市面上USB转RS232线多为±5V或±9V电平,都能正常通信。
- 板卡的复位键是低电平复位,该复位键一边接地,另一边直接连接核心板,核心板电路如下,并通过R198(0欧)连接到U17网口PHY的复位引脚上。
- 下面是主板电源电路,途中Q5是P沟道增强型MOSFET,1脚低电平场管导通,MP1482使能,主板上电,1脚高电平场管截至,主板掉电。
参考ESP8266/ESP32自动下载电路原理分析实现自动控制电路,真值表如下。


我这里选择了UART2,ROM也使用UART2进行DNW下载,实物图如下。
经测试这个电路能够满足自动下载电路的需求了,但是距离自动下载还差一步,即编写个程序自动完成串口操作。
参考Linux串口调试详解编写串口控制代码。开发板选择USB启动时,按下电源键UART2会打印如下图。Ubuntu下安装putty,打开串口,波特率。
可以通过串口日志判断设备进入DNW模式,Linux下串口设备文件默认可以共享,若有多个程序读串口数据,串口数据会随机传输到任一接收者,其他读取者将丢失数据,考虑到串口复用问题,故采用采用判断文件是否存在,然后调用程序进行下载,此处串口控制程序仅控制DTR/RTS的电平,不读数据。另外,下载的程序运行后设备文件还存在,直至OTG重新注册才会消失,由于虚拟机挂载设备比较慢,再次下载时会存在问题,故程序执行复位后先判断是否存在,若存在则等待它消失,然后再等待它可用,依此判断设备重新连接了。
adnw.c
编译运行
我将的安装路径改为了,因为是root权限,需要使用提权,但是出现以下错误。
经查找是因为路径不在的查找范围内。参考执行sudo命令时command not found的解决办法解决。
- 在/etc/sudoers文件内增加这么一行:Defaults secure_path=”/bin:/usr/bin:/usr/local/bin:…”, 把要用的命令path包括进去。
- 用命令的绝对路径。
- 使用sudo的env选项,像这样sudo env PATH=$PATH cmd.sh。
- 把脚本拷贝或链接到系统$PATH中。
修改文件,在文件中每行末尾增加,再次安装覆盖,这样设备加载时任意用户均可访问该设备。
上一篇:s5pv210(3) – 编译环境
下一篇:s5pv210(5) – 再续前缘
目录:s5pv210 – 集合
在Linux中安装dnw
[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)
Linux串口编程
Linux串口调试详解
ESP8266/ESP32自动下载电路原理分析
执行sudo命令时command not found的解决办法
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/11806.html