
嵌入式
文章平均质量分 55
grey_csdn
这个作者很懒,什么都没留下…
展开
-
1903_CoreMark白皮书阅读笔记
如果链表的大小超过了Cache的大小,还可以同时测试内存以及缓存的层级结构的效率。设计采用了常见的数据结构和算法,而且用到的运算都是在运行的过程中计算出来的从而避免编译器优化带来的影响。运行的方法以及报告方式也做了标准化的要求。这么小的内存的需求量在一些低端的嵌入式MCU上都是可以满足的。这个是一个基本的测试结果的展示,涉及到了不同的主频下的表现、不同的编译器版本的表现以及相同的MCU和编译器但是不同编译选项的表现。再看ARM的内核架构介绍的时候看到了不同的内核都测试了一个CoreMark/Mhz的参数。原创 2024-02-22 08:37:29 · 535 阅读 · 0 评论 -
1846_安全SPI
之前用过一些SPI的通信,其实SPI也是我最初迈入嵌入式的时候接触到的通信的功能,算得上是一种让我感觉到亲近的一种通信方式。过去的一段时间,参与过功能安全项目的开发设计,让我对安全这样的字眼有了一些直觉上的好奇。随着科技的进步以及人们对于安全的重视,未来汽车电子中的功能安全设计肯定会被考虑的越来越多。针对类似的统一性标准做一下了解,对于未来面对随时可能出现的工程实施诉求还是有很大的帮助的。而SPI协议本身没有很好的标准化,安全SPI是这方面的一个很好的解决方案。其实,这么看的话也可以是相同的。原创 2023-12-14 08:18:42 · 1000 阅读 · 0 评论 -
1243_FreeRTOS的软件定时器
全部学习汇总: GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS.其实,从这个简单的描述就能够知道软件定时器的作用。如果做一个比喻的话,软件定时器的作用就像一个定时炸弹的引爆器一样。它可以控制起爆的时间,而起爆对应的就是软件执行启动的时间。FreeRTOS的软件定时器其实是依赖于已经存在的FreeRTOS的功能来实现的而不是依赖于定时器的中断。因此,这样的实现不会在中断的上下文中执行任何代码。如果不是超时原创 2022-05-19 20:35:21 · 540 阅读 · 0 评论 -
1227_MISRA_C规范学习_运行时错误规则要求
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!这一次来看一下MISRA C 2004中关于运行时错误的规则要求,其实这部分跟多的是在讲项目开发的实施方法上的要求而不是编码规则本身。规则要求也比较简单,只有一条。运行时中的错误至少得用下面的一种方式来检查:1, 静态分析;2, 动态分析;3, 编码进行检查;关于动态检查,可以考虑一下的几个方面:1, 算数错误。原创 2022-05-03 08:14:22 · 380 阅读 · 0 评论 -
1226_MISRA_C规范学习_标准库相关的规则要求
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!20.1, 标准库中的保留符号不能够定义、重定义或者取消定义。针对这条规则,其实很好总结,总之就是一句话:不要影响标准库的功能,不要改标准库的信息。20.2, 标准库中的宏、对象以及函数的名称不能够重用。20.3, 传递给库函数的参数全都应该进行有效性的检查。20.4, 不能够使用heap。这个可能有些自己折腾着玩的小项原创 2022-05-02 10:13:03 · 447 阅读 · 0 评论 -
1225_MISRA_C规范学习_预处理命令规则要求
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!19.1, 这一条应该难以全部实现,比如在AUTOSAR的软件中进行存储分区是很常见的。而存储分区其实是在反复包含memmap的一个头文件。这样的处理机制就很难保证这一条规则的符合,好在这只是一个建议而不是强制。19.2, 这一条似乎几乎是不可能出现的一个规则要求,应该少有人会在代码文件命名的时候选择使用这样的符号来给自己增加麻烦。原创 2022-05-01 09:40:58 · 376 阅读 · 0 评论 -
1224_MISRA_C规范学习_结构体与联合的规则要求
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!18.1, 结构体以及联合在完成转换的时候必须保证结构体以及联合的信息完整性。这里涉及到一个概念,也就是C语言中的不完全类型。那么什么事不完全类型呢?顾名思义,也就是信息不完备的一种表达形式。比如说,声明了一个数组但是不给出数组元素的个数;再比如使用了一个结构体或者联合的名称但是却不给出其定义。这种暂时不给出的信息在编译器最后处理的时候必须原创 2022-04-30 19:05:15 · 456 阅读 · 0 评论 -
1223_MISRA_C规范学习_指针与数组的规则要求
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!17.1, 这一条应该是指针和数组一起配合使用的时候要求的,指针的运算必须是指向数组或者数组元素的时候才允许。因为对于嵌入式的硬件访问,在便捷实现上可能有很多种可能。很典型的一个就是存储按照物理地址进行访问的时候,应该还是有这样的可能性。不过,相关的担忧点其实也很容易理解。因为存储排布可能情况还是很多的,而指针的增减等运算其实是跟所指向的对象类原创 2022-04-29 20:35:27 · 707 阅读 · 0 评论 -
1221_MISRA_C规范学习_关于函数的规则要求
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking16.1, 函数的参数数目不能是可变的,这个我在工作中其实是遇到很多可变的设计,自然,遇到的基本都是不符合规范的了。16.2, 函数不能够直接或者间接调用自己。这一条的主要目的是为了避免出现递归,最终导致堆栈空间使用问题。当然,针对递归的使用这里是一刀切了,直接不能用,即使是存储不会增长的尾递归也不允许使用。16.3, 函数的参数必须要有名字。关于这一条,说起来还是很有意思的。我曾原创 2022-04-27 21:53:02 · 553 阅读 · 0 评论 -
1218_MISRA_C规范学习笔记_switch表达式的要求
全部学习汇总: https://github.com/GreyZhang/misra_c_hackingswitch语句如果不加限制的话会引入很多复杂的表达以及bug,因此在使用的时候应该通过风格或者规则来加以限制。对我来说,比较好的一点是在编码的初期就被这些条款卡住了以至于后来看到有些代码的写法让我觉得开启了新的世界一般。随心所欲而不逾矩,规则规范的存在还是好的,至少是可以让自己期待的一切都是可控的。看上去,实现这一条规则的方式也很简单。只要是有执行内容的case最后加上一个break原创 2022-04-24 19:38:13 · 535 阅读 · 0 评论 -
1216_MISRA_C规范学习笔记_控制流的规则要求
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking不能够有执行不到的代码,但是防御性代码除外。关于防御性代码是什么,在后面的规则中可以继续了解。对于我现在接触的各种项目来说,其实这部分冲突最大的点或许是在于标定选择使能的分支生效。这部分的确也是在编译阶段就能够侦测到的,但是在实际的应用中其实还是得保留的。所有的非空表达式要么可以产生某种有效的效果,要么就是可以影响到程序流的选择或者改变。单纯的无效处理是不允许的。空语句之后必须要有原创 2022-04-22 20:59:01 · 561 阅读 · 0 评论 -
1214_嵌入式硬件常识积累_什么是TTL电平
全部学习汇总: GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong!知识学习起因:在接触RS232通信的时候,有介绍说RS232的一个缺点是接口电平电压高,与TTL电平不兼容原创 2022-04-20 22:08:52 · 1432 阅读 · 0 评论 -
1212_MISRA_C规范学习笔记_控制表达式规则要求
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!13.1, 赋值操作不能够用以产生布尔量。直白的翻译不是这样翻译,但是我觉得表达的含义应该是这样子。这里就需要有一个明确的认识了,判断条件true或者false应该使用布尔量或者布尔量表达式,但是为了在表达上更加具备可读性,我觉得可以强制做一个要求:判断条件必须是布尔量表达式,哪怕携程bool_func() == true这样的表达也是可以原创 2022-04-18 22:23:28 · 329 阅读 · 0 评论 -
1211_MISRA_C规范学习笔记_表达式的要求
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking12.1, 规则12.1(咨询):在表达式中,应该对C语言的运算符优先级规则有一定的限制。关于这一条规则,有两点需要注意:1,合理使用括号,括号并不是越多越好; 2,有时候,括号的位置会让运算的结果发生变化。在上面的也给出了一个可以参考的例子。通常,在学习阶段可能老师讲解的时候会考察大家对于结合性以及优先级的处理。但是我觉得这个并不是编程的核心点所在,如果以工程实施为目的这样的时间不用原创 2022-04-17 16:37:07 · 548 阅读 · 1 评论 -
1210_MISRA_C规范学习笔记_指针使用的规范性
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking这一次,把整个指针相关的这个章节一起看一下。指针的类型:指向某个对象、指向一个函数、指向void、NULL类型。指针类型转换,允许的隐式转换有:指向对象的与指向void的转换、NULL与其他的类型之间的转换。11.1,这一条要求很简单,函数指针不能够与整形指针以外的其他的类型的指针进行转换。如果这一条不遵守,可能会导致一些未定义的行为发生。11.2,指向对象的指针,可以进行转换原创 2022-04-16 21:21:11 · 1137 阅读 · 0 评论 -
1209_MISRA_C规范学习笔记_Rule 10.6
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking对于所有的无符号类型的常量数字都用一个后缀U来进行标识。这里面有几个可能导致误区的知识点:1. 如果数值足够大的话,其实有无这样的区分都是可以的。系统可以识别出来究竟是什么类型,但是如果数值不是很大,可能存在多种可能了。2. 接着第一条,其实还有另一个知识点。那就是数值的大小其实也是相对的,针对不同的MCU的平台,芯片本身的基础数据类型的宽度其实是有差异的。这样,在不同的平台下可能会有原创 2022-04-16 09:14:44 · 826 阅读 · 0 评论 -
1208_MISRA_C规范学习笔记_Rule 10.3 Rule 10.5
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!如果将按位操作符~和<<应用于基础类型unsigned char或unsigned short的操作数,则结果应立即转换为该操作数的基础类型。看了一下这一条规则,我觉得如果拿这一条规则来考察我现在接触到的一群工程师的话,估计十之八九会全都栽跟头。当然,这样的操作在现在的软硬件开发平台上用到的不多是一个原因。另一个原因自然还是基本原创 2022-04-15 21:05:11 · 593 阅读 · 0 评论 -
1207_MISRA_C规范学习笔记_Rule 10.3 Rule 10.4
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!这一对儿规则要求其实是类似的,只是一个应用于整形而另一个则适用于浮点类型。基本的要求其实是简单的:如果进行强制数据类型转换,一定是从宽值范围向窄值范围进行转换。换一个角度也可以去理解这样的要求,如果是从窄值范围到宽值范围的转换,其实隐式的转换模式基本就可以了。这里给出了一部分例子用以说明上面的情况,判断这个使用方式是否规范的一个简单的标原创 2022-04-14 21:48:04 · 1317 阅读 · 0 评论 -
1206_MISRA_C规范学习笔记_Rule 10.1 Rule 10.2
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!这两条规则都是关于数据类型转换的,其中10.1是针整形的,而10.2主要是针对浮点类型的。两条规则的要求其实是有相似之处的,都是关于禁止隐式数据类型转换,换言之是必须显式强制数据类型转换确认的要求。什么时候不可进行隐式的数据类型转换呢?下面几点:1,可能出现信息丢失的时候;2, 复杂表达式的时候;3, 作为函数的参数的时候;4,原创 2022-04-14 21:37:18 · 840 阅读 · 0 评论 -
1205_MISRA_C规范学习笔记_Rule 9.3
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking这一条要求是针对枚举类型的量的初始化的。在枚举列表中,除非所有元素都被显式初始化,否则不能使用" = "构造来显式初始化除第一个元素外的其他成员。这个规则要求还是很简单的。要么只初始化第一个,要么不初始化,要么全都初始化。这样,就很容易记住这一条规则的要求。趁着这个机会,回忆一下自己对枚举类型应用的掌握脑子里现在存在的几条比较深刻的记忆。1,如果不进行显式的初始化,枚举类型的元素的原创 2022-04-13 20:12:00 · 379 阅读 · 0 评论 -
1204_MISRA_C规范学习笔记_Rule 9.2
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking要求:数组以及结构体的非零初始值初始化要使用大括号来进行匹配的指示。关于这一条的要求有几个细则,这里面也有之前我一直不熟悉的或者错误认识的地方,在此一起纠正一下。1,多维数组的初始化,成员信息需要使用大括号来进行区分。上面的例子中给出了一个很典型的例子,一个3 * 2的数组的表示。为什么这么表示呢?这个在之前看过的C语言的三本经典教程中其实是对最原始的由来进行过解释的。其实,这个地原创 2022-04-13 20:09:48 · 420 阅读 · 0 评论 -
1203_MISRA_C规范学习笔记_Rule 9.1
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!所有的自动变量在使用之前都应该被赋值。自动变量有好几种可能性,上面的规则中也做了基本的介绍。对于我接触的嵌入式系统来说,根据经验来说这部分在大多数时候都是适用于局部量。由于所使用的存储是一个动态的,如果不进行初始化的话会有随机值出现影响最终的结果。对于全局量来说,为了满足ISO C中的初始化为0的要求,一般都是通过启动代码等处理成符合要原创 2022-04-11 21:42:26 · 666 阅读 · 0 评论 -
1202_MISRA_C规范学习笔记_Rule 8.11_Rule_8.12
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking 这一次,看两条规则。 具有内部链接的对象和函数的定义和声明中应使用静态存储类说明符。 这一条其实是跟前面看过的几条规则是有一定关系的,比较好的实践方式就是要保证这样的编码习惯:1,如非必须尽量不要定义可以全局访问的变量、常量以及函数; 2,尽量缩小各种变量、常量或者函数的作用域。 关于上面两条习惯的保持,在实践中有很多内容是跟static的使用方法有一...原创 2022-04-08 22:39:05 · 911 阅读 · 0 评论 -
1201_MISRA_C规范学习笔记_Rule 8.10
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking 所有在文件范围内的对象或函数的声明和定义都应具有内部链接,除非需要外部链接。 如果一个变量只能被同一个文件中的函数使用,那么使用static。类似地,如果一个函数仅从同一文件的其他地方调用,则使用static。使用静态存储类说明符将确保标识符只在声明它的文件中可见,并避免与另一个文件或库中的相同标识符混淆。 其实,这个就是一个static的使用应用要求。我见过很...原创 2022-04-08 22:36:30 · 417 阅读 · 0 评论 -
1200_MISRA_C规范学习笔记_Rule 8.9
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking! 刚开始看这部分描述有了一点疑惑,最初我理解成了:同一个量可能在不同的文件中定义了,自然,这个显然是不合理且不允许的。 这里其实是不一样的,主要的差异在意linkage,一个典型的例子就是在链接文件或者链接命令中定义的信息。这些信息其实是可以在代码中声明并且访问的,但是对于这部分的处理,符合上面说明的可能是一个UB的行为。这里具...原创 2022-04-07 21:33:09 · 477 阅读 · 0 评论 -
1199_MISRA_C规范学习笔记_Rule 8.8
全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking! 看到这一条规则,让我联想到了上次的两条规则的解读。其实,在上次两条规则解读的时候我提到了这一点。只是上次提到的仅仅是函数,因为上次的规则针对的也是函数。 上面这部分笔记的截图来自我前一份笔记,我把这样的要求实现总结进了我自己的编码风格管理之中。这样的风格养成,其实最初也不是参考MISRA C来的,但是现在看来当...原创 2022-04-07 21:29:42 · 501 阅读 · 0 评论 -
1187_滞环处理的C语言实现
全部学习汇总:GitHub - GreyZhang/c_units: A small piece of code which can be reuse anywhere, I call it a unit. This is a collection of unit in C language! Ok, yes, it would be my toolbox. 滞环处理在嵌入式中经常用到,但是现在我手头并没有一个可以重用或者参考的架构。一般都是直接加入到代码中作为一段代码片段,但是反反复复...原创 2022-02-28 22:27:59 · 2265 阅读 · 0 评论 -
1185_SPC560B60L7_ADC0标准通道的Injected转换模式
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 上面框出来的这个通道在176的封装上是存在的,是一个ADC的标准通道。从下面着色的部分看,这个输入信息中PA寄存器是没有修改的必要性的。 这一部分框出来的信息,进一步明确了这个命名的方式,看得出来这个通道就是一个标准通道。如果想要这个通道可以实现ADC的功能,需要设置这个通道的掩码。...原创 2022-02-26 21:14:30 · 3419 阅读 · 0 评论 -
1184_SPC560B60L7_ADC的模拟量看门狗、DMA以及中断
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 这里,第一次对这个模拟量的看门狗功能有了一个了解。这个模拟量的看门狗,其实监控的不是时间而是模拟量的有效范围,也就是ADC采集的数值是否在合理的范围之内。相应的功能也提供中断的触发功能,如果开启了这个功能并且设置了中断的掩码,那么当采集到的数值不在合理的范围内的时候会触发一个中断。 看起来...原创 2022-02-26 21:12:50 · 3539 阅读 · 0 评论 -
1183_SPC560B60L7_ADC的预采样
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 预采样主要是用来在启动采样之前给内部的电容进行充放电操作的,很重要的两个作用:一个是精确地控制转换速度,这个功能可以通过PSR寄存器进行开关控制;另一个是重置之前的转换结果。 如果开启了预采样功能,那么一个正常的操作序列将会是:预采样 + 采样 + 转换。 这是一个预采样的示意图...原创 2022-02-26 21:11:06 · 715 阅读 · 0 评论 -
1182_SPC560B60L7_ADC的CTU触发功能简介
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 几条关键的信息整理如下: 1. ADC的CTU功能用以增强ADC的注入采集功能。 2. 触发源可以选择eMIOS和PIT,每一次请求转换一个通道。 CTU的触发模式可以与Normal模式和Injected模式共存。存在一定的冲突时,有如下的处理关系: 1. 如...原创 2022-02-26 21:08:25 · 690 阅读 · 0 评论 -
1181_SPC560B60L7_ADC的采样时间以及转换时间
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 工作的时钟是可以选择的。采样以及转换都需要一定的时间,其中采样时间是内部电容充电的时间。另一个需要注意的点:每一个通道的这个时间都是可以独立配置的。这么看,其实ADC的采样似乎是一个分厂细分化的工作,不好做成一个通用的功能。 两个ADC模块这部分的介绍是有一点相似的。有几条需要...原创 2022-02-26 21:06:34 · 1338 阅读 · 0 评论 -
1180_002_SPC560B60L7_ADC基础功能整理
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking!ADC的特性以及资源梳理 1. ADC0以及ADC1的精度是不同的,其中ADC0的精度是10bit,而ADC1的精度是12bit。 2. 拥有53个通道,而且是可以扩展为81个通道。扩展出来的树木是28个,不是8的倍数,看起来部分扩展可能会有复用? 3. 4个通道是支持外扩的,每一...原创 2022-02-26 21:03:35 · 682 阅读 · 2 评论 -
1179_SPC560B60L7_FMPLL与系统时钟
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 以前没有注意过,这个MCU的输入晶振的可选范围跟最初结果的MPC5643L等不同,选择的范围是低且窄的一个范围。同时,这个提示信息似乎是说这个时钟还可以更高,只是产品的验证并没有关注过这样的配置下的效果。 这个是对SPC560B64XX MCU中FMPLL的特性的简单介绍,几个知识点如下:...原创 2022-02-26 20:58:08 · 4549 阅读 · 0 评论 -
1172_FreeRTOS QEMU项目信息梳理
全部学习汇总:GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. 首先看一下MPS2是个什么概念。 没有找到MPS2,但是找到了一个MPS2+,看样子这个是一个开发板的名字。 开发工具上,有IAR以及gcc的编译器可以选择。对于我自己的学习来说,自然是后者了。GNU等开源的组织的确是很好的网络雷锋,让我们接触新的技术方便了很多。 这部分内容很简单了,描述了相应的QEMU的工程...原创 2022-02-17 22:09:45 · 831 阅读 · 1 评论 -
1171_Simple FreeRTOS Demo Projects都有什么
全部学习汇总:GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. 如果没有硬件,可以使用集中其他的手段来进行学习。一个是windows或者linux下的移植,另一个就是M3的QEMU。前面这个是我上一次了解FreeRTOS功能的时候使用的方式,后面这个看起来是我这一次要去学习了解的对象。这里的仿真对象是一个M3的内核而不是一款具体的单片机,我多少有一些好奇,M3一个单纯的内核是不是可以提供足够多的功能去完成一个功...原创 2022-02-17 22:07:57 · 708 阅读 · 0 评论 -
1167_ARM CORTEX-M0了解
全部学习汇总:https://github.com/GreyZhang/g_arm_cores CORTEX-M0的内核是一个32bit的RISC指令集架构。 早期的ARM设计其实是在PC领域的,但是随着ARM在比如说手机这样的电池供电的系统中越来越流行的时候,ARM也开始向MCU转换。ARM7可能是最早用于设计MCU的一个内核,自带RAM、Flash以及一些其他的外设。而Atmel AT91以及ST的STR7可能是最早一批使用ARM核做MCU设计的。 ...原创 2022-02-17 21:25:34 · 1712 阅读 · 0 评论 -
1159_S32K148 FEE的实现
S32K148中的FEE实现方式有一定的硬件机制存在,因此在实现上跟之前接触到的FEE多少有一些不同。在此之前接触到的FEE,比如说MPC5644上的FEE,基本上是Flash驱动加纯软件策略来实现的。而S32K148上面则不同,在这个MCU上有专门的硬件实现机制,虽然也用到了Flash但是Flash是表现上其实看上去更像是真实的EEPROM,用户只需要直接写入或者读取RAM即可。 具体的原理分析在《001_Flash例程分析》、《002_S32K148 Flash相关文档解读》、《003...原创 2022-02-16 22:25:14 · 901 阅读 · 0 评论 -
1158_S32K148 FlexRAM与EEPROM大小关系
所有的型号不仅仅是2MB配置的型号都支持2KB的非交错配置扇区,而2MB的配置里面支持4KB的交错扇区。 这是前面已经看过的一段,这里提到了高达4KB的FlexRAM可以用来实现EEPROM或者说是传统的RAM功能。其中,EEPROM的实现机制是一个硬件机制。 这里有一个需要弄清楚的问题:前后这连孤单文档中的2KB以及4KB是否是有一定的映射关系?一般Flash实现的EEPROM应该都有一个内存和Flash的映射,是不是这样看来,只有2MB的配置是可以支持4KB的EEPR...原创 2022-02-16 22:23:16 · 1349 阅读 · 0 评论 -
1157_S32K148 Flash相关文档解读
这么看,两个bank,一个主要是用来存程序而另一个则主要是用来存数据。 2M的flash其实是包含了NVM的512K的,这个跟我前面做程序调试的时候看到的数据是一致的。 过快或者过慢的时候都不应该被擦除。 擦除之后的状态为1,编程的时候只能够从1改成0。 从0到0的操作也是不允许的。 这个单片机的EEPROM仿真功能还支持加密。 这里倒是让我疑惑了一下,难道说只能够模拟出来4K的EEPROM吗? 另外,...原创 2022-02-16 22:21:28 · 1138 阅读 · 0 评论