RTT_逍遥
RTT_逍遥 - 认证专家
我欲乘风

注册于 2 years ago

回答
172
文章
6
关注者
9

从log来看,有一些libc相关的error冲突。
可以先把libc disable 掉,再编译看看。

试一下“右击” 另存为

也有可能是 浏览器的问题,试下chrome 浏览器,

串口波特率默认是115200.
通常应该都能达到的。这个跟平台有关系,和micropython没太大关系。

hi:
hdac1 这个是一个指针:
DAC_HandleTypeDef *hdac1;
没有进行初始化就使用了:

    hdac1->Instance = DAC1;
    HAL_DAC_Init(hdac1);

    hdacch1_cfg->DAC_Trigger = DAC_TRIGGER_T6_TRGO;
    hdacch1_cfg->DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;
    HAL_DAC_ConfigChannel(hdac1, hdacch1_cfg, DAC_CHANNEL_1);

Hi 最近libc做了一些调整。比如error.h
可能会导致你在master分支上做的一些libc相关的东西有些问题。
官方肯定也没法测太多软件包,不过你可以稍微修改一下提交PR,大家一起来维护。
因为studio里面的不经常会变动,github上的代码经常会变动的,所以推荐使用studio来做长期coding

解决方案:
找到编译ok的studio里面的SIGALARM 这个宏定义,再去判断一下bsp里面出错的原因,找到rootcause。修改PR即可。

人无完人,代码也没有完全没有问题的。欢迎PR.

#ifdef RT_USING_FINSH
#include <finsh.h>
static void reboot(uint8_t argc, char **argv)
{
    rt_hw_cpu_reset();
}
MSH_CMD_EXPORT(reboot, reboot system);
#endif /* RT_USING_FINSH */

#define MSH_FUNCTION_EXPORT_CMD(name, cmd, desc)                      \
                const char __fsym_##cmd##_name[] RT_SECTION(".rodata.name") = #cmd;    \
                const char __fsym_##cmd##_desc[] RT_SECTION(".rodata.name") = #desc;   \
                RT_USED const struct finsh_syscall __fsym_##cmd RT_SECTION("FSymTab")= \
                {                           \
                    __fsym_##cmd##_name,    \
                    __fsym_##cmd##_desc,    \
                    (syscall_func)&name     \
                };

从代码看,这个reboot的symbol,没有编译到cmd的ld里面。
ld里面有以下内容:

        /* section information for finsh shell */
        . = ALIGN(4);
        __fsymtab_start = .;
        KEEP(*(FSymTab))
        __fsymtab_end = .;

可能是reboot这个symbol没有编译进FSymTab里面

#define RT_EOK                          0               /**< There is no error */
#define RT_ERROR                        1               /**< A generic error happens */
#define RT_ETIMEOUT                     2               /**< Timed out */

看上去是RT_ETIMEOUT -2 超时,并不是一定是错误,如果不影响使用,可以不用care。

  1. 这个问题软件无法查看的,也无法修复的,软件是需要系统在逻辑正常的时候才能运行正常的。
  2. 应该有个EMC测试可以避免这种硬件问题,具体可以查看相关资料。

仔细帮你查看了一下dr_hwtimer.c里面的代码,

如果5tick是你觉得疑惑的地方,你可以追踪一下dr_hwtimer.c里面的如何把5s转换成tick的地方,并且打印出来看下,最后设置的是否是5000还是4995. 以我的经验来看,应该是在clock放大和乘积的时候,有一些地方精读的丢失。具体由于不知道你的时钟是多少,所以你可以自己找到root cause。

        {
            prescaler_value = (uint32_t)(HAL_RCC_GetPCLK1Freq() * pclk1_doubler / 10000) - 1;
        }
        tim->Init.Period            = 10000 - 1;
        tim->Init.Prescaler         = prescaler_value;
        tim->Init.ClockDivision     = TIM_CLOCKDIVISION_DIV1;

我觉得能够下载py文件已经可以说完成基本功能了。

但不能下载文件夹(报同步错误),, 这个说不定时哪里有一点点小bug,欢迎查看修复PR,对自己也是一种很好的帮助,或者也可以把log贴出来看一下。

可以试下这个软件包:
https://github.com/wuhanstudio/coremark

应该是没有特别测试的,如果你有经验,可以提交一个测试性能的软件包 。我觉得每个项目测试需求不一样,应该可以考虑整理一个提交软件包,给大家使用。

hi,打印日志是如何打印的呢?
可以考虑分段打印,比如读取128byte之后打印一次,循环打印。

hi, 最近finsh做了一些调整,添加了一个config。
请在menuconfig里面重新选中如下配置,然后再次scons一下。

image.png

回到
顶部

发布
问题

投诉
建议