辛昕

个性签名:

强者为尊应让我

  • 2023-11-29
  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    辛昕 发表于 2023-11-28 12:51 如果只是单纯的 AD采样数据—— 对我来说,我把它等同理解为 单一变量,比如说,你是12位AD ...
    针对写了个测试函数,验证可以。 代码在这里,https://gitee.com/xinxin19871118_admin/interview/blob/master/src/binary_search_4_flash_sector.c    

  • 回复了主题帖: spi flash是否可以位写?

    bigbat 发表于 2023-11-29 12:30 软件行业有一则谚语:“输入的是垃圾,输出也是垃圾!”,谚语的原文我忘记了,普遍的翻译是这 ...
    https://gitee.com/xinxin19871118_admin/interview/blob/master/src/binary_search_4_flash_sector.c  

  • 回复了主题帖: spi flash是否可以位写?

    bigbat 发表于 2023-11-29 10:13 数组的时间复杂度,无可避免是 O(n); 这个你都给我整不会了,数组使用线性搜索和链表也是不一样的, ...
    你考虑这么一个情况。 如果我要不断地往前覆盖,就是不在同一个地址写数据, 假如是 int a b c d 写入顺序是随机的 a b d d c c a a b c  这种情况下,你要查找a  b c d中一个元素的最后一个覆写位置。查找时间,最坏情况就是 O(n),无论正查还是反查都一样 尤其是,万一查找不到的情况下。   而且,这个东西,没办法实现在 flash上排序。 除非重写,就是重新排序重新写入。 那这样的话,wl的代价就太大了。时间代价也大。

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    bobde163 发表于 2023-11-29 08:35 这么早的帖子了,辛辛还在一一回复,真是感动。针对断电的情景,我的设计思想是数据结构中使用一个字节的 ...
    哦,你也是用一个单独字节。 其实这样子的话,我建议还是用CRC一类的算法比较好。 因为你只能检查一个字节,但如果用上CRC,好处是可以检查一整条记录的有效性。 而代价都是一个字节。

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    damiaa 发表于 2023-11-29 08:59 2015的帖子大家都还在继续啊,看来这个问题很多人思考过。最近接触MSPM0的评测,里面有个eeprom模拟模型 A ...
    看到了,确实如此。 大差不差。 我所考虑的地方比较麻烦的地方在于多id情形。 单一id,其实很简单的,而且可以实现高速的二分查找。   麻烦的地方在于多id 而littlefs这种就实现了更全面的 wl 算法——这也是这个问题的核心难点和关键点。

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    bobde163 发表于 2023-11-29 08:35 这么早的帖子了,辛辛还在一一回复,真是感动。针对断电的情景,我的设计思想是数据结构中使用一个字节的 ...
    断电的话,其实都是类似的思路——就是检查数据的有效性。 无论是你设计的这个思路——这个思路我蛮喜欢的,可以节省一个字节。 还有就是我想到的CRC。 这个思路,littlefs里也是。   我昨晚在看littlefs的思路,我突然发现,它的核心搜索算法其实和我设想的,大差不差,所以我也不折腾了,我决定移植它,或者对比spiffs. 当然,从活跃和适用性而言,以及后续进一步维护角度,littlefs更好。

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    辛昕 发表于 2023-11-28 12:51 如果只是单纯的 AD采样数据—— 对我来说,我把它等同理解为 单一变量,比如说,你是12位AD ...
    我确认了,这个问题是可以使用二分查找的。 因为,这个问题可以进一步抽象为   对于char A[size],A的前半部分已经存入无序非0元素,A的后半部分全部为0. 请采用快速的查找方法,找到无序非0元素的长度。   这个方法,之所以可以用二分查找,是因为—— 如果我们把 char A[size],看成是 short B[size/2]; 那么,无须非0元素出现的位置,一定就是在一个 0xXX00的地方。 而这个元素的类型,在B中是唯一的,而且,有且只有一个。 而它的左边全部是 0xXXXX,右边全部是 0x0000。由于我们并不关心,0xXXXX的大小问题,而0x0000显然也全部是0,对于任何一个B,它的左侧、右侧,永远可以区分 全0xXXXX 和 0x0000

  • 2023-11-28
  • 回复了主题帖: spi flash是否可以位写?

    bigbat 发表于 2023-11-28 14:19 只要是flash物理上就是先擦除后写入,而且是以块为单位的,读取也是以块为单位的,flash的擦除是有次数的, ...
    数组的时间复杂度,无可避免是 O(n); ——当然,这里说的数组,指的是顺序访问的意思 而链表,其好处是,可以只一路查找一个 ID 我的设计意图是 ,以ID为标识,设计的实际存储段内容是 这里只考虑 1/2/4 B的情形,更多的数组后续另行考虑 【ID:2B】【LEN:1B】【DATA:1~4B】【NEXT_ADDR(*)】【CHECK:1B】 *在真正找到下一个位置写入同一个ID的内容以前,NEXT_ADDR是 FF FF,相当于一般链表元素的 *next,指向下一个元素的地址。 原本,我可以把它设计成一个栈(这样就永远可以把最新写入的地址浮在栈顶,可以实现O(1)常数时间查找) 然而,我后来意识到,没办法,因为,已经写入的NEXT_ADDR没办法改变。 而且,相同的问题会出现,无论是要设置成二叉查找树,还是任何带指针的结构,都没有办法,因为,这个位置已经写入了。 在这种情况下,查找时间就变成了同一个ID已经写入的次数。 这个效果,比 O(n)在平均情况下会好一些,但在极端情况下,两者实际是一样的。

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    辛昕 发表于 2023-11-26 06:58 基本想通了,过了很久。 没什么好纠结的。 就是用 TLV 结构,当然还要加个 ID。 然后,数据在 ...
    预建二叉树的做法是不行的。 我自己补充一下。 常见这一楼的回答 http://bbs.eeworld.com.cn/thread-1264747-1-1.html#pid3282030

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    wj1478 发表于 2016-12-8 18:17 请教楼主关于nand flash的问题,一个单片机系统要将AD采样的数据存储到nand flash中,数据量较大,需要考虑 ...
    如果只是单纯的 AD采样数据—— 对我来说,我把它等同理解为 单一变量,比如说,你是12位AD,那么,你每次采样的数据应该是用 16位,2字节存储。 假如是这种单一变量。 我认为这种特殊的磨损平衡是很容易实现的。 我提个思路,你参考一下。   由于是单一变量,2字节(对于1字节,4字节都一样)——重点不是多长,而是单一变量。 你可以为它划分一个片区。 并非一定是1个sector 或者 一页。   你可以不断地往前写啊写啊。 由于你是单一变量,并且定长——我建议是,无论一个数据块多长(AD这个情形是2个字节),我建议你设计成为2的幂,比如 1 2 4 8 16...等。 如此,由于你不断往前写。 你要搜索最新的写入位置 和 计算已写入多少,可以通过很简单的二分查找实现高效率。 为啥呢? 很简单,对于一个没写完的片   前面全部是有效数据,即,非全FF FF 后面未写区域全部是 FF FF 在AD 2字节这个情形里——假设你的AD采样值不可能出现 FF FF (假设有,那你就把每个字节定义为 4字节好了,这样,无论如何都不可能出现 FF FF FF FF,因为最多也就是 00 00 FF FF——大端存储) 如此,你可以对地址,进行 4字节对齐查找。 当你找到那个 前四个字节 非全FF 后四个字节全FF 时,就完成了查找。   这个查找可以等价为下面一个问题 1、在一个 4字节长度(比如为uint32_t)数组 uint32_t A[N],前m个数据非0xFFFFFFF,m+1到n-1 为全0xFFFFFFFF,请设计一个高效算法,查找m的位置。 显然,这个题目是对上述sector的抽象,而这个问题,显然是可以使用二分查找法。   我的第一直觉是这个应该是可以二分查找的,让我思考一下——确认一下,毕竟,它不是有序数列。但是它比较特殊的是,后面都是最大的FF FF FF FF 应该可以。

  • 回复了主题帖: spi flash是否可以位写?

    感谢上面几位,我不知道怎么一一艾特,因为你们有几个好像还不是我的好友,艾特不到。 我说一下,我是因为在思考如何 实现 kv键值对的 spi flash的实现方案的时候想这个问题的。   PS: 我必须承认,我原来思考的那种预建二叉树的方式是不可以的——理由很简单,因为RAM花费太大,或者干脆不够大。 而且,我都这么搞了,尤其对于如果存储的数据都是 1/2/4 的单一变量而言,简直就像脱裤子放屁——直接用这个预建的二叉树不就好了。   后来,我为这个问题沉迷很久很久,一整天都特别兴奋,反复翻 M.A.K的书,浅浅理解了各种ADT,包括外部查找的奇奇怪怪的东西,然而都没想到思路。 最麻烦的地方在于,所有这些设计,基本都涉及链表,这样的话,前面写入的数据和next指针,数据不变也就罢了,但next指针如果没法改的话,只能用链表不断往前推。这个查找的时间复杂度就不够好。   后来,我直接跑去看 spiffs  littlefs。当然还只是处在看介绍的部分,还没看 demo 更没看代码。 但在spiffs的一些介绍里,我看到他们就用了我上面提到的这个特性。   也就是说,spi flash 的 位,尽管不能位寻址写,但是,它确实是 “nand” 特性的。 就是说,我写进去0,那个位就会变为0,它只是不能把0写回1——而非得通过擦除而已。  

  • 回复了主题帖: spi flash是否可以位写?

    bigbat 发表于 2023-11-27 16:45 只要是flash都是块写的,只有eeprom是可以位写的,而且eeprom的寿命也比flash长。
    哦,eeprom可惜贵了点...... 话说,铁电和eeprom相比如何,我的意思是,如果要用eeprom的话,是不是fram更经济实惠还合适

  • 回复了主题帖: spi flash是否可以位写?

    ljj3166 发表于 2023-11-27 19:23 干哈要这么办?减少擦写次数?
    对。

  • 2023-11-27
  • 发表了主题帖: spi flash是否可以位写?

    额,我的意思是说,比如说,SPI FLASH的地址 address  = 0 的位置 它是1个字节么,8个位 要写,肯定是先擦除成FF么 1 1 1 1  1 1 1 1       F          F 那么,写入的时候,我能不能只写1位呢?   嗯,当然,我知道这玩意是不支持位寻址的,但是不要紧。   比如说,我的位写顺序是这样的  (bit) 3 2 1 7 4 我可不可以    初始:1 1 1 1 1 1 1 1 bit3:    1 1 1 1 0 1 1 1  通过写入 0xF7 bit2:    1 1 1 1 0 0 1 1  通过写入 0xF3 bit1:    1 1 1 1 0 0 0 1  通过写入 0xF1 bit3:    0 1 1 1 0 0 0 1 通过写入 0x71 bit3:    0 1 1 0 0 0 0 1  通过写入 0x61 简单地说,我的想法就是 如果我对一个未插入位置继续写入,我知道已经为0的地方是肯定回不到1的,但是,原来1的地方能不能为0 呢? 另外,这算不算一个常规操作呢? 还是会导致 未定义 行为?      

  • 2023-11-26
  • 回复了主题帖: 为什么MCU也需要AI?

    正好想问这个问题,长见识了,亚麻跌

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    本帖最后由 辛昕 于 2023-11-26 07:01 编辑
    bobde163 发表于 2015-8-2 22:31 我当时的做法是比较简单的,就在2个page的空间做成了一个环形存储器,每次有数据更新就往下一个空间写入 ...
    基本想通了,过了很久。 没什么好纠结的。 就是用 TLV 结构,当然还要加个 ID。 然后,数据在FLASH物理地址里是顺序往前写。 至于如何记住某个ID最后的地址,考虑的方法是 预建一颗二叉查找树,二叉树以ID值为关键值排序(这样可以实现 平均 O(LogN)的操作时间) 预建是在初始化时,以当前FLASH区域写入情况的最后一页来实现—— 最后一页的定位是相对容易的,而且可以用很标准的二分查找实现——因为未写入区域是纯 FF FF FF FF FF FF FF 这个查找起来,比在一堆(就算是一堆未排序定长TLV结构快 里查找某个特定ID的TLV块的最后一个记录,是两个不一样的算法题。 ) 至于断电等情形,我的想法是 构建的TLV结构快,要留一个CRC校验码;因此.....而且这个过程其实和wl不wl没关系 但凡flash写入,都有这种危险,因此CRC校验,足够防止;

  • 回复了主题帖: 用flash存储数据,你还想着用文件系统?不,你需要的是......wear leveling

    白丁 发表于 2015-8-1 22:47 对于算法的仿真有宾夕法尼亚州立大学开发的flashsim还有华科胡洋博士的ssdsim,都是不错的仿真平台,可以省 ...
    那个,我突然觉得,很多年前你误解了我的意思 当然,主要是我也没说清楚。 那时候我自己也是往这方面找的。   其实严格来说,我不关心文件系统,我关心的是 单片机小参数存储场合。 也就是说,其实我不是fs,我是kv键值对......   所以,很多现成的wl库,都是在fs场合里用的

  • 2023-11-06
  • 回复了主题帖: 简单说说链表和一个应用实例

    终南愚公 发表于 2023-11-4 16:07 好像没有讲清楚链表和游标的联系?
    没有什么联系,游标只是一种非动态分配的方案。 也不只有链表会用到对栈的分配。

  • 2023-11-03
  • 回复了主题帖: 真心请问大佬们嵌入式怎么规划职业生涯

    老哥,我加好友数量上限了,加不了了,有啥事直接聊吧。18898425015

  • 2023-11-02
  • 回复了主题帖: 发现一个生产国产高速ADC的厂家

    对了,其实你需要的参数具体是什么,列出来凑凑

统计信息

已有89261人来访过

  • 芯积分:609
  • 好友:397
  • 主题:498
  • 回复:7166
  • 课时:3
  • 资源:56

留言

你需要登录后才可以留言 登录 | 注册


zzw_rst 2020-10-10
http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1143785&page=1#pid3015697你好前辈,问一下这个电流镜的VGS和ID怎么手工算出来
dangmichael 2018-7-21
你好 年龄相近 交个朋友 QQ2765480960 13412871884
曹世鹏 2014-9-11
出差还木有回来。
辛昕 2014-3-31
其实这个问题我觉得稍微有点复杂,一句两句话说不清楚,你有空的话,加我qq吧,我们具体聊聊
755087287
qiwan 2014-3-30
您好!在RF技术社区里看了您的帖子《CC2530之选一个协议栈是个技术活》。 的确,我周围的人入门无线传感器网络的时候也是从zigbee开始的,就像您说的那样,网络上关于zigbee的资料很多,还有专门的zigbee论坛,比如飞比zigbee论坛,论坛管理员outman在创建该论坛时也考虑过协议栈的选择问题,到底是zigbee还是SimoliciTI或者其他的协议。 我现在也刚刚接触SimpliciTI协议栈,正摸着石头过河...刚开始的时候我也纠结要不要从Zigbee开始,然后再来SimoliciTI,但是时间来不及,只能硬着头皮上 希望不懂的,能向您请教! 加油! ...
辛昕 2014-3-15
不熟悉CAN总线
不过,作为普通IO用是没问题的,前提是,如果你作为普通IO了,还怎么接收CAN数据呢
mipoem 2014-3-10
你好,在论坛上看了你关于DM3730的GPIO的操作方面的问题,我现在也在做一个这方面的东西,想将CAM的那些数据位都设置成为普通的IO,弄成接收数据的总线,不知道可不可以这么用呢?CAM的数据进入DM3730后是不是进入了一个专用的处理单元?
darius龙 2014-3-6
你好 我看你在 论坛上讨论过鼠标的相关设计,问题想要请教下,,我的qq  1101628989  ,,谢谢!
辛昕 2014-2-20
我找找
不过我已经很久了,所以我找到后大概也不会再运行一次

等等,我记得我当时是直接运行例程的

但是,那个东东操作起来,有些步骤要按照他说的,你能说说你那边的开发环境和操作过程么

我当时是用 iar for 8051
参考的是官方文档。

今晚有点晚,马上周末了,所以可能要周末再找找了
majianghua 2014-2-19
你好  我有看到你调试的cc2530的SimpliciTI 协议栈  我现在在调试    可是一直都调试不通   就简单的点对点都没有通    老板给的两块板子也不知道有没有问题   你能把你调试好了的点对点程序发一份给我试试看啊   谢谢了     415419974@qq.com
爱心 2013-12-23
你埋个红包啊,下次来给我个惊喜啊,哈哈哈
辛昕 2013-7-2
来个综合点的
按键控制LED亮灭,并且通过串口告诉电脑LED状态
同时,电脑通过串口也能控制LED亮灭。
怎么操作自己设计,不用很复杂。

事情想明白了再回复我或者问我。
不要动不动就问,那样我太辛苦,你也白问了
小莫愁 2013-7-1
刚刚自学单片机想做个小玩意,应该从什么起手
马克 2013-2-18
番茄钟是什么?
呵呵,我知道了。
jacky.han 2012-12-3
对代码充满尊敬,这句话说得很好!
Start From Sample,Start From Welltechcom, 从样品做起,汇您所需——汇达通电子淘宝
Monkey嘭嘭 2012-8-27
辛昕: 不错的开头。
建议找一个例程参考。

参考电压 的概念 在 AD 模数 相关的介绍型文章应该基本会讲到,上网搜索一下 模数转换器  的资料,好好看看。

通道的设置
恩恩~我会加油的~
Monkey嘭嘭 2012-8-25
辛昕: 你现在弄到哪一步了?弄了些啥?
只写了一个最简单的GPIO加按键控制LED的程序,现在在写一个ADC程序,但是多通道不知道怎么设置,还有参考电压之类的都不是很懂,不知道该根据什么去选择。
Monkey嘭嘭 2012-8-25
我是一个菜鸟,现在在学飞思卡尔的K60,辛学长有没有什么好的建议,或者学习路线的规划呢?
辛昕 2012-8-23
CC430,你说的,是不是一款msp430的具体型号(的简称),如果没记错,cc系列的好像是带无线的? 430用到的C语言,其实就是C语言,只不过,它是针对430这个硬件结构稍微做了些调整,所以它的C编译器没记错的话叫c430编译器,就像51的C编译器叫c51一样,大同小异,差别不大。 看不懂程序的话,没什么,给个建议你,把源码贴出来,写出不懂的地方,发到430的版块里,玩过的人肯定懂。 一般的C语言是标准C语言,这些具体硬件的稍有差别,可能有一些不同的关键字,语法也可能有些差别。我想大概是因为你不了解所以才看不懂。 ...
Leonqiuli 2012-8-22
你好,我是广工的学生,想问一下我们在学习CC430时用到的C语言是哪一种C语言?
嵌入式C语言还是单片机C语言?
我学习过一个学期的谭浩强的C语言,感觉还是看不懂那些TI公司的Demo程序例子,怎么办才好呢?
qrswll 2012-4-19
来学长的空间踩一脚=。=
newmannewworld 2011-12-17
以前用手机浏览你的博客,一直以为你的头像上戴的是红领巾……
newmannewworld 2011-12-16
辛昕: 谢谢你浏览了我的博客~~希望多多交流哈
客气了。共同进步
kkloving 2011-11-25
辛昕: 不是,有几个交情十年以上的朋友。也许有的是不愿意说,但有一个,因为有共同经历,算是有共鸣了,很多话会跟他说,但是在两个城市,很少有时间在一起。
不过还
那就是说得太多了,没什么可以说的了。。。。嘿嘿,我这瞎捣浆糊的人啊。。。
kkloving 2011-11-23
是你不想说了吧,估计还是没有达到共鸣。假如想找到一个可以互相吐槽的人,你希望得到别人耐心的时候,你也得耐心的去倾听。
祝工作愉快!
ov17 2011-10-12
请看看我的网站 www.ov17.com
lyzhangxiang 2011-9-13
嘿嘿
lilongfeng 2011-5-31
liweifang22 2010-12-9
线路板、贴片专业生产厂家!全国最实惠!85折优惠!样板50元/款起。我厂为专业PCBA样板、中小批量生产及代工生产厂商,旨以客户的最大边际效益为出发。拥有先进的线路板及贴片、插件加工的专用生产、检测设备,通过不断引进国际先进的工艺技术及科学的管理方法,提供PCB及SMT一站式无忧服务。欢迎咨询!李小姐13714033721。QQ:31985159
辛昕 2010-12-1
呵呵,大叔,好久没见,是最近很忙了,还是在一个安静的地方思考自己的问题呢?
是挺久了。看到你那么多的评论,很是有点受宠若惊啊。
最后几句是说我吗?哈哈,谢谢夸奖。
xiaoxif 2010-12-1
很久没登门了。半年?快一年了吧。小树苗长到碗口粗啦!挺拔挺拔的,长得好快、好壮实!
soso 2010-9-24
辛昕: 嗯嗯,他也教了我不少东西。
不过,我觉得,我似乎在电感的选择上有点纠缠细节了,丢了全局...额,我得好好想想
soso 2010-9-24
要不就去坛子里寻求帮助吧  比如eeleader  :)
范小川 2010-6-26
辛昕: 这个啊,额,简单说是要了解 松香 的特性和充分利用它,另外就是要懂得对电烙铁的维护。鄙人不才,写了一篇东西,后面还有一些大大的专业补充,我给你链接,你去
嗯,3Q,鄙人手工不佳,设计时经常短路。老师很郁闷,同学很崩溃、、
范小川 2010-6-25
辛昕  焊电路有啥技巧?拿出来分享呗。
小娜 2009-11-25
辛昕: 最近安静了撒,,,我天天都上的,,,只是不说话,潜水而已,,,,,
弄个潜水艇下去,把你打捞上来
查看全部