出出啊
出出啊
It is Not the Mountain We Conquer, but Ourselves

注册于 4 months ago

回答
627
文章
13
关注者
39

mbconfig.h 配置文件,最后 MB_MASTER_TOTAL_SLAVE_NUM ,修改这个宏定义

单独的 env 分区,俩个程序可以都访问到,而且都是有读写权限的。app写的会改写 boot中写的值,但是不改变其它值。
初始化环境变量是一辈子只需要进行一次的操作,app 和boot 里,即便有相同的初始化代码,但是你得保证第二次上电启动后不会再初始化环境变量。这个得你自己处理判断是否已经初始化过。

image.png

看样子必须选择 dfs ,但是,poll select elm 看情况可以删掉的

试试不用 POSIX ,或者,去掉 PKG_NETUTILS_TCPDUMP PKG_USING_NETUTILS 这俩。

先把线程句柄声明定义成全局变量,然后调试运行到创建线程成功后启动运行线程的地方,添加到 view。
里面有线程的栈顶地址和栈大小俩变量。把栈地址添加到 memory ,或者去memory 输入栈地址。
全速运行,想知道内存占用多少得暂停一下。看内存里 “#” 号占有量比例。

dfs_statfs 函数,第一个参数是 flash 的挂载路径,第二个是个结构体,返回flash的容量和剩余 blocks 数量。f_blocks * f_bfree 应该就是剩余字节数

        /* change the owner thread to original priority */
        if (mutex->original_priority != mutex->owner->current_priority)
        {
            rt_thread_control(mutex->owner,
                              RT_THREAD_CTRL_CHANGE_PRIORITY,
                              &(mutex->original_priority));
        }

rt_mutex_release 函数里,恢复优先级的代码。

印象中,mqtt不是传输小电影用的。数据量大了,不需要自己先分包吗?

右键Libraries 添加已经存在文件,如果不知道文件路径,双击打开其中某个 stm32xxxx 文件,右边打开文件标签上可以右键,打开文件目录。
手动添加一下就可以。

是我的例子里就这么写的,还是你简化了?

  1. 直接写 “mt29f” 这个字符串是有风险的,先查找设备,然后用超找到的设备名当参数。
  2. 你没有调用 yaffs_start_up 这个初始化 yaffs 函数吧。
//    rt_mtd_nand_t mtd_dev = RT_NULL;

//    mtd_dev = (rt_mtd_nand_t)rt_device_find("mt29f");
//    if (mtd_dev == RT_NULL)
//    {
//        rt_kprintf("no mtd device found\n");
//        return -RT_ENOSYS;
//    }

//    yaffs_start_up();

//    result = dfs_mount(mtd_dev->parent.parent.name, "/usr", "yaffs", 0, 0);
//    if (result == RT_EOK)
//    {
//        rt_kprintf("Mount YAFFS2 on NAND successfully\n");
//    }
//    else
//    {
//        result = dfs_mkfs("yaffs", mtd_dev->parent.parent.name);
//        if (result == RT_EOK)
//        {
//            result = dfs_mount(mtd_dev->parent.parent.name, "/usr", "yaffs", 0, 0);
//        }
//        else
//        {
//            rt_kprintf("Mount YAFFS2 on NAND failed\n");
//            return -RT_ERROR;
//        }
//        rt_kprintf("Mount YAFFS2 on NAND successfully\n");
//    }
  1. 还有,一个地方是 yaffs_flashif.c 中的 yaffs_start_up 函数 mtd_nand = (rt_mtd_nand_t)rt_device_find("root");

这里得改成 rt_device_find("mt29f");

  1. yaffs 的源码替换过了吗?

可以啊,有硬件定时器框架。添加 RT_USING_HWTIMER 宏开关。如果使用 studio ,是可以选择添加的。env 的启用路径如下。
Hardware Drivers Config → On-chip Peripheral Drivers → Enable timer

用keil,想换那个版本换哪个版本。自己添加源文件和头文件路径是每个硬件工程师必备基础技能。

提示那个文件有非 ascii 字符,检查一下那个文件内容

回到
顶部

发布
问题

投诉
建议