env使用easyflash不是3.2.4版本,而且没有type插件?

发布于 2019-02-10 13:43:56
如题,自己选了latest选项了,但是下载下来的easyflash是3.2.3,而且没有type插件,这是我的自己问题吗?

查看更多

关注者
0
被浏览
2k
16 个回答
armink
armink 2019-02-11
最新版还没有同步过去~~先等下,晚些时候我来做下同步
春和景明
春和景明 2019-02-12
armink 发表于 2019-2-11 09:29
最新版还没有同步过去~~先等下,晚些时候我来做下同步


朱哥,你看看这个编译cJSON.c报警告。有一些小问题。
https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=10315&page=1#pid43380
armink
armink 2019-02-12
春和景明 发表于 2019-2-12 15:28
朱哥,你看看这个编译cJSON.c报警告。有一些小问题。
https://www.rt-thread.org/qa/forum.php?mod=viewt ...


我觉得不用纠结这个问题,毕竟原版就是这样的,虽然有警告,使用没问题就好
liu2guang
liu2guang 认证专家 2019-02-13
armink 发表于 2019-2-12 17:04
我觉得不用纠结这个问题,毕竟原版就是这样的,虽然有警告,使用没问题就好 ...


天龙哥,可以尝试,给这种package做包时,把忽略警告打开,就应该好很多:lol
armink
armink 2019-02-13
liu2guang 发表于 2019-2-13 10:52
天龙哥,可以尝试,给这种package做包时,把忽略警告打开,就应该好很多 ...


还是开着吧,提醒原始作者去治本:lol
春和景明
春和景明 2019-03-08
armink 发表于 2019-2-13 12:58
还是开着吧,提醒原始作者去治本


天龙哥,今天使用了easyflash 最新版本,下载下来是4.0版本,咋env里没有插件的选择啊?
还有我想用用日志的功能,easyflash中的log和ulog和easylogger选择哪个啊?
armink
armink 2019-03-08
春和景明 发表于 2019-3-8 14:44
天龙哥,今天使用了easyflash 最新版本,下载下来是4.0版本,咋env里没有插件的选择啊?
还有我想用用日 ...


4.0 不需要类型转换插件了,直接可以把任何类型存入 EasyFlash

日志用 ulog 也行的
春和景明
春和景明 2019-03-11
    本帖最后由 春和景明 于 2019-3-11 16:26 编辑


armink 发表于 2019-3-8 16:09
4.0 不需要类型转换插件了,直接可以把任何类型存入 EasyFlash

日志用 ulog 也行的 ...

试了试,用新函数读env,我想读出来的是float型的和int型的。
size_t ef_get_env_blob(const char *key, void *value_buf, size_t buf_len, size_t *value_len)
那么读的过程,是不是首先存进char型的buf中,然后在转换,还是直接往参数value_buf传float型的地址。

写的时候呢,是否的先转换为char字符数组 然后再存啊?
EfErrCode ef_set_env_blob(const char *key, const void *value_buf, size_t buf_len)


另外这些length的单位是字节?
我测了测 感觉不好用啊!
1. 我是这么读的,但是不成功
float test_ampl;
ef_get_env_blob("1al",&test_ampl,4,NULL);
2. 另外我实际试了试 api中示例
ef_get_env_blob("key", NULL, 0, &len);
会断言buf为空。
3.当我要读V值,是个六位的,比如0.00356. 给buf_len传入大于6的,就会把read_len = 6
但是在下边这个函数就会出断言。
EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) {
EfErrCode result = EF_NO_ERR;

EF_ASSERT(size % 4 == 0);

fal_partition_read(part, addr, (uint8_t *)buf, size);

return result;
}


armink
armink 2019-03-11
春和景明 发表于 2019-3-11 15:26
试了试,用新函数读env,我想读出来的是float型的和int型的。
size_t ef_get_env_blob(const char *key, v ...


先去看下 API 文档,里面同样有例子
春和景明
春和景明 2019-03-11
    本帖最后由 春和景明 于 2019-3-11 16:31 编辑


armink 发表于 2019-3-11 16:23
先去看下 API 文档,里面同样有例子

我看啦 而且试了试 出了好多错:L 应该是我ef_fal_port没跟上easyflash吧
armink
armink 2019-03-11
春和景明 发表于 2019-3-11 16:28
我看啦 而且试了试 出了好多错


啥错误,写清楚一些。感觉你的用法就跟 API 手册上写的不一样
春和景明
春和景明 2019-03-11
    本帖最后由 春和景明 于 2019-3-11 17:06 编辑


armink 发表于 2019-3-11 16:31
啥错误,写清楚一些。感觉你的用法就跟 API 手册上写的不一样

之前出的错误都是因为用的easyflash3.xx的port文件,更新的4.0的就好了。

我试着读float型value,不能直接读吗,必须先存到字符数组,然后转换一下。
api手册中没有这方面示例啊,原谅我的愚钝。:'(
int ef_fal_init(void)
{
float test1;
int test2;
char test_buf[16];
fal_init();

if (easyflash_init() == EF_NO_ERR)
{
rt_kprintf("easyflash_init no error!\n");
}

ef_get_env_blob("1al",&test1,sizeof(float),NULL);
ef_get_env_blob("advh",&test2,sizeof(int),NULL);
ef_get_env_blob("1al",test_buf,sizeof(test_buf),NULL);

rt_kprintf("test1 = %f\n",test1);
rt_kprintf("test2 = %d\n",test2);
rt_kprintf("test_advh = %s\n",test_buf);
return 0;
}

打印如下
test1 = %f //错
test2 = 959459885 //错
test_advh = 0.0337 //对
armink
armink 2019-03-11
春和景明 发表于 2019-3-11 17:00
之前出的错误都是因为用的easyflash3.xx的port文件,更新的4.0的就好了。

我试着读float型value,不能直 ...

rt_kprintf 不支持浮点打印,日志还是建议使用 ulog 开启浮点模式打印浮点数。
我刚才测试下面的代码,没有问题,你可以试试
    float test1 = 1.1f;
int test2 = 123;

ef_set_env_blob("1al", &test1, sizeof(float));
ef_set_env_blob("advh", &test2, sizeof(int));

test1 = 0.0f;
test2 = 0;
ef_get_env_blob("1al", &test1, sizeof(float), NULL);
ef_get_env_blob("advh", &test2, sizeof(int), NULL);

LOG_D("%f, %d", test1, test2);


独角戏
独角戏 2019-04-02
去哪下载4.0版本,我看还是v3.3啊
armink
armink 2019-04-03
独角戏 发表于 2019-4-2 17:30
去哪下载4.0版本,我看还是v3.3啊


4.0 还没有发布正式版,直接在 env 中选择 latest 就可以试用了

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览