科研项目开发记录

嵌入式系统petalinux

测试串口首次读取板卡号(之前到室外测试接收数据为空,可能是因为多线程日志写入冲突造成的!),项目实际部署时最好还是事先写入配置文件。(由于项目中没有严格要求从串口动态获得板卡号,只是作为设备唯一标识的一个子项,所以可以删除该子功能——2017.11.29)
 

使用petalinux自带的ftp命令(ftpget、ftpput)进行文件的上传与下载。

上传或下载文件成功,system系统函数返回值为0,否则为256。(不知道下载或上传中断返回值是多少,应该也是256)。这样也方便解决远程update的本地备份问题,只有当下载新版本成功时将旧版本备份,之后将进程切换到新版本,如果新版本运行初始化配置失败,或出现其他严重的错误,则删除新版本工程文件,将原来备份的旧版本恢复到当前工作目录,并将进程切换到旧版本工程。

如果当前已有备份版本,且当前版本运行正常,现在要更新版本,则首先删除原来备份的旧版本,将当前正在使用的版本备份起来,然后再启动新版本工程。

(此方案仅适用於单个进程的系统更新,所以可以进行进程动态切换的操作,对于多个子程序模块组成的系统采用新的远程系统更新方案,且系统更新后需要进行系统重启的操作——2017.11.29)

新的远程更新系统模块使用petalinux自带的wget命令从FTP服务器下载新版本系统压缩包。为了避免网络阻塞使用killall指令时与FTP上载(FTPUpload.elf)程序模块互相影响,造成异常。

由此可见,petalinux在进行内核及文件系统配置的时候可以根据项目需求提前进行规划需要保留哪些功能,编译进内核或文件系统中,使得项目开发减少不必要的工作量。比如远程校准系统时间的命令ntpdate就比默认配置的rdate更为好用。
 

对于高精度测量板卡长时间工作读不出数据的解决方法建议:(原因未知)

原因猜测:因为高精度测量程序进行采样配置后使用了saveconfig命令,如果系统在采样时断电或重启就会导致司南板卡默认的unlogall配置被覆盖修改。而重启后的系统如果没有及时采样,司南板卡就会一直处于频繁采样的工作状态,导致uart数据收发管脚电压不稳定,最后导致司南板卡无法正常工作。

修改方案:

1、进行硬件复位,在提供电源(VCC)的管脚引出GPIO,方便在软件层进行控制操作。

2、修改高精度测量子程序模块,每次进行采样配置后不执行saveconfig的操作(默认unlogall状态),且在采样结束后,多次执行unlogall指令,确保,司南板卡不处于搜星状态。

 

BLE Mesh Android APP测试

问题背景:

因为要申请软著,重新装上了之前开发的基于BLE Mesh智慧照明系统,结果发现扫描Mesh节点的时候总是扫描不到,而使用蓝牙扫描方法则可以扫描到设备节点,然后找到了从前使用的二维码及设备节点的short code,输入后进行关联设备,无一例外的关联失败(%0)。以为是手机版本的问题,新手机使用的Android7.0,对应Android API Level 24,于是修改Android Studio工程的.gradle文件,将target SDK改为24,安装之后,问题还是没有解决。第二天我拿来了原来Android系统版本4.4.4的测试手机,安装最终版本的APK,发现仍然扫描不到Mesh节点,我就很头大。

解决方法:

细心(其实是自己之前疏忽大意)的我发现Mesh节点的主板侧边上有一个特别小的按键,我忽然想起来这个按键的作用,reset!!!,我之所以扫描不到这些Mesh节点,是因为我之前用其他手机关联了他们,项目停止后,我没有将它们解除关联,导致它们只会发送BLE的广播消息,而不会向外广播Mesh的消息,果然,我长按固件复位按键后,用新手机一下就扫描到了所有Mesh节点(我开了3个),然后点击扫描到的设备自动关联成功,然后单控组控都没有问题。我还想起来以前好像出现控制没有反应的情况是因为修改了场景的密码。哎,做项目应该多拍照记录的,否则时间过了,事情过了,再现也是比较麻烦的一件事,因为你不知道会出现什么问题,或者你想不起以前的解决方法了。

PetaLinux文件系统崩溃

现象:

无法通过Winscp删除或创建文件,通过putty客户端在Linux控制台进行文件写操作出现"Read-only file system"的错误。

解决方法:

对于PC端Linux系统,可使用 mount -o remount rw /  (让“/”根文件系统重新挂载并有可读写模式),然后重启系统解决。对于嵌入式PetaLinux系统,可使用mount -o remount rw /run/media/mmcblk0p1,然后使用“shutdown -r now”重启系统恢复(“/run/media/mmcblk0p1表示存储系统镜像(image.ub)的存储介质eMMC的挂载目录

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章