recan
recan
http://yyds.recan-li.cn 一个专注于嵌入式软件架构设计的新生代农名工

注册于 7 months ago

回答
356
文章
7
关注者
12

既然你已经排查了板子串口与PC通讯没有问题,是否可以采用同样的思路排查下北斗模块的串口问题呢?
如果说PC串口与北斗模块通讯也没有问题,那么很有可能就是北斗模块接入你的板子后引入了干扰因素,
这就需要再进一步排查。

这个应该是系统版本4.0.3与vi_lastest版本的编译兼容性问题。
如果不想改4.0.2系统版本且要解决这个问题,可能需要修改vi_lastest的小部分代码了。
我在4.0.3版本是都找到了这2个问题,位于不同的目录。
image.png

finsh使用的是串口,而串口是全双工的,输出并不影响输入。
你可以输出,仅仅使用了串口的输出功能,就好比把日志打印到串口一样;
而你需要输入的话,是要根据finsh的源码来移植的。
同意@小小李sunny 的说法。

从这个提示看,会不会这个address的问题?
链接脚本里面指定的地址?
image.png

base64的加解密算不上是一个复杂的实现,
一般的实现就是使用查表置换。
这里给出一个我平时项目中使用的源码
也挺精简的,就导出加密和解密两个接口,
内存和代码量方面都比较低,运行也比较稳定,没出什么问题,
可以参考下,希望能帮助到你。

可能你需要了解下AES算法的基本知识了。
AES的数据块的大小就是16字节(只能是16字节),但是它的密钥长度可以是16字节/24字节/32字节;
密钥长度越长,安全复杂度越高,自然花费的时间要多;
另外,由于AES的基本数据块长度是16字节,如果需要处理的数据长度大于16字节,怎么办?
这里就涉及到数据分组的问题,常见的数据分组有ECB模式和CBC模式
在数据分组的过程中,数据的总长度必须要是16的整数倍,
因为AES是对称加密,输出的密文长度等于输入的明文长度。
如果我要处理的数据不是16的整数倍,怎么办?
这里就要涉及到数据的填充,填充之后的长度需要满足16的整数倍,
不同的应用场景可能使用不同的填充算法,常见的填充算法有PKCS#7、ZeroPadding等等。
关于对称算法的一些总结,之前有写过一篇文章,欢迎了解下。

如此高的精度,软件定时器是没法实现的,软件一般就是10ms/1ms这种级别,也只能走硬件定时器这条路子了。
另外,us级别的定时任务,恐怕只能简单输出波形这种,不然别的任务(程序)没法玩了😂。

个人觉得是需要使用支持posix的gcc,
原因是支持posix的话是有些专门的posix接口需要实现的,
有相关实践的朋友可以确认下。

根据这个CPU架构,查一下这个CAUSE应该是有含义的,大致推断下是什么原因。
另外PC指针也可以利用下,看能否找到异常的附近代码?
image.png

使用普通串口工具发这个AT指令,ESP8266能正常响应吗?
先确认下Wi-Fi模组端工作是否正常。

看报错是初始化的时候一个类似不匹配的函数赋值给了一个函数指针?
建议把报错这行附近的代码贴一下。
另外,如果你别的工程没有报错的话,会不会是那个工程没有开启-Wincompatible-pointer-types这个编译选项?

nano版本搭配newlibc是不是比较好?
主要还是看你是否需要完整的C库。

rtconfig.py里面设置gcc的前缀是正解。

这个entry函数是工程的代码实现的吗?
如果是,那么这个实现entry函数的C文件是否有加入到参与编译?

GCC环境是编译,使用-lm添加math库的链接;
一般来说CFLAGS是添加编译相关的选项;
LFLAGS是添加链接相关的选项;
而-lm是发生在链接阶段,所以需要添加在LFLAGS里面。
希望能解决你的问题。

回到
顶部

发布
问题

投诉
建议