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

注册于 5 months ago

回答
212
文章
2
关注者
3

感谢楼主提出这个问题。
为此我特意去查了下我其他使用了该接口的工程代码,
幸运的是,代码都无一例外执行了freeaddrinfo(addrInfoList)。
image.png

同意你的做法,使用DMA模式可以最大化地提升串口通讯的性能,提升响应能力。

对比下前后的map文件,
map文件里面可以看到每个.o文件的flash占用大小,
找出那些占比比较大的,研究下。

你可以测试下单纯刷新一行的时间是多少?再对比评估下。
另外,刷全屏的时候,设置2屏不一样的内容,切换下,看下闪屏能肉眼看出来吗?

印象中USB主机是可以通过USB总线的电平变化发现有USB从机(比如U盘)接入的,
参考下这个说明
根据上面的理论,USB主机在实现其驱动程序的时候,应该有对应的方式发现从机设备的。
没具体实践过,仅供参考。

既然你已经排查了板子串口与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

回到
顶部

发布
问题

投诉
建议