分类目录归档:编程

Jlink V9固件修复

参考链接:
https://blog.csdn.net/qq_39738885/article/details/102530414

https://blog.csdn.net/yekui6254/article/details/85272767

https://blog.csdn.net/qq_26904271/article/details/82726657

https://blog.csdn.net/yunjie167/article/details/117998428
https://www.cnblogs.com/xiaoheikkkk/articles/11193741.html
http://blog.chinaunix.net/uid-20788517-id-263475.html

一、起因

起因是在淘宝购买的Jlink,下载程序的时候会弹出警告

然后有时MDK会异常退出。

继续阅读

stm8l timer 设置问题

系统时钟配置为16M,程序使用TIMER4做为系统定时器,使用如下配置
TIM4_TimeBaseInit(TIM4_Prescaler_16, 99); //100us
程序可以正常运行。

我想把定时器的周期改为10us,使delay()的精度达到10us,
TIM4_TimeBaseInit(TIM4_Prescaler_16, 9); //10us
这样修改之后,发现系统不能正常运行了,程序启动的打印信息都没有。我一度怀疑是程序跑飞了!

经过排查发现是TIMER的中断响应太快,占用了系统的全部资源,主程序的运行完全被TIMER中断打断了。我测试在TIMER中断里面点灯操作是功能正常的。

转载——source insight 复制出来的汉字乱码解决

原文链接
https://blog.csdn.net/weixin_42650045/article/details/84874929

source insight 复制出来的汉字乱码解决

本人遇到这个问题困扰了几天,一直以为是软件的问题;网上搜的解决方案都不能解决。
只需要在复制source insight中汉字之前 将输入法切换到中文输入,粘贴到记事本等编辑工具里面就不再是乱码了

git报错——fatal: detected dubious ownership in repository at

在虚拟机ubuntu共享文件夹里创建git库,用tortoisegit查看会报如下错误:

上网搜索到https://medium.com/@thecodinganalyst/git-detect-dubious-ownership-in-repository-e7f33037a8f,里面说git v2.35.2版本之后git会检查当前用户是否是git仓库文件夹的所有者,如果不是的话,就会提示上面这个错误。

网上说的解决方法,是更改文件夹的所有者为当前用户。但是对于ubuntu的共享文件夹,我尝试这个解决方法不可行。另外对于共享文件夹,每个都要修改所有者,这样也太麻烦了。既然新版增加了这个限制,那我只有降级到旧版本使用。降级之后,git操作一切正常。

这里不得不吐槽一下,git增加这个功能之后,虽说提高了安全性,但是却大大减小了易用性。很多软件也是这样,越升级功能越臃肿,这使得我对新版本软件越来越没有更新的兴致。

git文件夹权限及自动换行配置

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    autocrlf = false
    safecrlf = false
[remote “origin”]
    url = git@gitlab.synaptics.com:cordless/CMBS_Lite.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch “master”]
    remote = origin
    merge = refs/heads/master
    [branch “_CL_2.01”]
    remote = origin
    merge = refs/heads/B_CL_2.01

忽略文件夹权限
filemode = false

不进行自动换行处理
autocrlf = false
safecrlf = false

命令行操作
查看filemode选项
    git config –get core.filemode

    git config core.filemode
设置filemode选项
    git config core.filemode true

继续阅读

STM32 SAI问题

STM32F446 SAI blockA和blockB配置为从模式,如果MCU先启动SAI,再打开音频芯片SAI时钟信号,此时MCU不能进入DMA中断,采集不到数据。用Jlink复位一下MCU,SAI接口的数据采集和发送才正常。不知道这个问题是什么原因。

解决方法有2种:1.MCU启动先不使能SAI,把音频芯片SAI时钟打开后再启动MCU SAI;2.把MCU的SAI配置为主模式。

但是对于这个问题还是感到很奇怪。

关于数组清零

不要使用赋值方法清零。对于16位数组,或者32位数组,赋值清零并没有把所有位都置零。

int32_t mix_data_new[SAI_SLOTS_SIZE][2] = {0};
#if 0
for (j = 0; j < 2; j++)
{
for (k = 0; k < SAI_SLOTS_SIZE; k++)
{
mix_data_new[j][k] = 0;
}
}
#endif

使用memset清零,可以确保每个数组中的每一位都被清零。
memset(mix_data_new, 0, sizeof(mix_data_new));

奇怪的问题

第1段:
int16_t data;
const char pcm_data2[] = {…};

data = pcm_data2[i];
data += pcm_data2[i+1]<<8;

第2段:
data = ((int16_t)pcm_data2[i+1] << 8 + pcm_data2[i]);

很奇怪,上面2段代码,在STM32F401上用MDK编译出来执行的结果不一样。第1段执行出来的结果是正确的,第2段执行出来的结果是错误的,并且不知道是怎么算出来的。

 

 

转载——config 和 Configure 的区别

原文链接:http://yzsijin.cn/2020/09/12/openssl%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91/

config 和 Configure 的区别
Configure 需要指定平台信息,比如像上面那样直接指定是 arm 平台,则 Makefile 中也就不会出现 m64 选项,不需要像 config 那样再手动去修改 Makefile 脚本。

而 config 则是自己去检测当前的系统环境,自动识别系统内核信息和编译器并设定参数等,然后将相关选项再传递给 Configure 脚本去完成最终配置。
而交叉编译的时候基本就会存在问题,所有更推荐使用 Configure 方式来进行配置操作。

但 Configure 需要自己指定目标平台信息,这个可以通过将 config 脚本放置目标平台,然后通过 ./config -t 命令来查看其检测显示的对应平台信息,如下:

image

最后会显示 ./Configure linux-armv4

补充说明下,配置操作改写和生成 opensslconf.h 和 opensslv.h 头文件,opensslv.h 主要记录当前库使用的版本信息,而 opensslconf.h 则主要显示编译 openssl 库时的选项配置情况。