
PowerPC
文章平均质量分 63
grey_csdn
这个作者很懒,什么都没留下…
展开
-
1190_FreeRTOS学习笔记_ST_SPC5Studio中tick的修改
全部学习汇总:GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. 最近用到了FreeRTOS,在ST的SPC5Studio中的SDK。之前用过几次,但是在这个环境下没有用过FreeRTOS。 FreeRTOS中提供了比较好用的延时机制,但是这个延时的单位或者基准是OS的tick。这次我需要一个精度稍微高一些的延时,这样就需要把tick的数值调整一下,让这个时间尽可能短一些。 这里是tick的配...原创 2022-03-12 12:27:25 · 943 阅读 · 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 · 3261 阅读 · 0 评论 -
1184_SPC560B60L7_ADC的模拟量看门狗、DMA以及中断
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 这里,第一次对这个模拟量的看门狗功能有了一个了解。这个模拟量的看门狗,其实监控的不是时间而是模拟量的有效范围,也就是ADC采集的数值是否在合理的范围之内。相应的功能也提供中断的触发功能,如果开启了这个功能并且设置了中断的掩码,那么当采集到的数值不在合理的范围内的时候会触发一个中断。 看起来...原创 2022-02-26 21:12:50 · 3349 阅读 · 0 评论 -
1183_SPC560B60L7_ADC的预采样
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 预采样主要是用来在启动采样之前给内部的电容进行充放电操作的,很重要的两个作用:一个是精确地控制转换速度,这个功能可以通过PSR寄存器进行开关控制;另一个是重置之前的转换结果。 如果开启了预采样功能,那么一个正常的操作序列将会是:预采样 + 采样 + 转换。 这是一个预采样的示意图...原创 2022-02-26 21:11:06 · 482 阅读 · 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 · 421 阅读 · 0 评论 -
1181_SPC560B60L7_ADC的采样时间以及转换时间
全部学习笔记汇总:GitHub - GreyZhang/g_spc560b64: Learn and hack powerpc MCU SPC560B. Happy hacking! 工作的时钟是可以选择的。采样以及转换都需要一定的时间,其中采样时间是内部电容充电的时间。另一个需要注意的点:每一个通道的这个时间都是可以独立配置的。这么看,其实ADC的采样似乎是一个分厂细分化的工作,不好做成一个通用的功能。 两个ADC模块这部分的介绍是有一点相似的。有几条需要...原创 2022-02-26 21:06:34 · 1084 阅读 · 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 · 526 阅读 · 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 · 4329 阅读 · 0 评论 -
123_MPC5634M系统时钟配置学习
其实这部分功能我大致是会的,之前工作中在类似芯片上也实现过。今天想整理一下主要是因为我觉得我想整理一下学习的思路,可以作为其他人的一个参考。 我觉得学习与开发在实际的操作上应该是有较大区别的。开发的目的很纯粹,就是让功能可用。但是,学习的目的与之不同,应该是以点窥面,能够从系统观、大局观上掌握相应对象的全部功能并且探索使用场景。 如果是进行...原创 2019-06-04 22:45:46 · 1167 阅读 · 0 评论 -
119_ucos ii中用户可用的优先级
代码测试中,发现有些task的优先级使用了之后调度会失败。看官方带的文档任务分配列表中应该只有最后一个task不可用,其他的没有特别的说明。今天直接根据实际移植的工程做一下测试。 OS的优先级最低级配置为254,看着说明不可以高于254。接下来,测试最后面几个优先级是否可以用。优先级254: 实际测试,任务无法启动。优先级253:...原创 2019-06-02 20:50:33 · 963 阅读 · 0 评论 -
118_ucos ii的任务创建探索
移植成功了ucos,只有一个运行的Task运行了一个LED闪烁,感觉还可以。尝试了一下任务创建,试了一下还比较简单。 首先尝试了扩展任务的创建,一个例子如下: 这个是移植时候使用的一个例子,运行OK。任务优先级是3。 接下来尝试创建了另外两个扩展任务,控制另外两个LED的闪烁。测试了一下功能,运行正常。需要注意...原创 2019-05-29 22:43:42 · 392 阅读 · 0 评论 -
117_MPC5634M上尝试移植ucos系统
大学的时候尝试过在8051单片机上做ucos的操作系统,最近尝试做了一下MPC5634M上的系统移植。 没有什么特别的目的,只是觉得RTOS算是嵌入式中相对来说有点技术含量的东西,而我自己的手中恰好又有这个一个开发板。如今NXP的官网上提供支持PowerPC的gcc编译器,没有使用限制,看起来一切都就绪只带开工了。 总结了一下整个移植的过程...原创 2019-05-29 21:35:00 · 673 阅读 · 0 评论 -
113_PowerPC调试中的printf
前一阵子,为了实现这么一个功能我先是使用了CAN转串口,然后通过串口进行了字符串的打印。当时觉得这个功能基本上已经差不多可以了,至少是足够我进行很多软件调试了。 今天发现,原来NXP提供的IDE中可以很方便地使用printf。接下来,演示一下如何使用这个功能。 一个比较关键的地方是工程的创建,创建的时候选择IO支持:...原创 2019-05-19 10:21:33 · 618 阅读 · 0 评论 -
powerpc_013_数字输入
前面做的ADC模块算是驱动里面比较难处理的一个驱动了,但是这部分现在也已经做得代码生成非常成熟了。看起来,整个的基础驱动现在实现起来应该没有太大的难度了。再看一个简单的驱动——数字输入。 在我手头的开发板中,有几个开关量的输入。这里简单拿其中一个来做一下测试,选择S2作为测试。为了能够看得出效果,再增加一个LED与之关联。 这个测试不是很成功,甚至...原创 2018-09-26 23:23:20 · 331 阅读 · 0 评论 -
powerpc_012_ADC功能实现与测试
ADC的驱动实现,其实最麻烦的不在于硬件原理,而在于管脚与通道的映射关系。几种模式的ADC我觉得都是如此。即使是背后有一个再复杂的硬件实现,也基本不会妨碍我们进行功能代码的实现。 我用到的开发板上做了两路输入可调的AD,我暂且只用其中的一路。相应的硬件资源使用的是PIN2,AN17。进行ADC功能配置的第一步,可以先检查并把pin脚功能配置出来。尤其是在管脚功能出现复...原创 2018-09-24 21:01:26 · 660 阅读 · 0 评论 -
powerpc_005_给程序增加一个计数器到时间的转换功能
这次学习之路,计划一直在现有的一个工程上不断更新、不断增加新的功能知道这个工程的功能足够完备,具备一定的可用性。 前面几次的小结都是围绕一个时间执行的机器周期来进行的,但是实际的工作中我们需要的往往不是计数器个数来衡量一段程序的执行时间,我们需要的可能是一个确切的时间概念。比如,程序执行了多少毫秒或者多少微秒。接下来,做一个小小的转换完成这个功能。...原创 2018-08-30 22:32:46 · 366 阅读 · 0 评论 -
powerpc_001_s32ds中使用汇编代码
之前曾经有过C语言比较差,我一点点学习C语言的经历。经过几次回炉之后,现在的C语言知识在工作中基本上是够用了。 现在全心去开发底层代码,似乎PowerPC的驱动又成了我的一个障碍。没关系了,找个基础的教程继续回炉吧!点滴做起,总有突破的时候。 手头前些年积累了几块PowerPC的开发板,正好开始启动学习。先从工具开始,今天...原创 2018-08-27 23:49:39 · 2018 阅读 · 3 评论 -
powerpc_002_基于时基测试一段代码的执行时间
整体的软件来源于上次的软件,我修改了文件名称,同时增加了汇编代码。而这次的汇编代码功能是基于时基进行软件执行时间的测试。 这是PowerPC内置的一个内核级别的功能,功能依赖于几个寄存器。 TBU à 时间计数器高位 TBL à 时间计数器低位 HID0 à 使能时基计...原创 2018-08-29 00:43:24 · 652 阅读 · 0 评论 -
powerpc_003_代码执行时间测量调试与改进
前面两次小结都是理论性的,这一次做一个实践性的小结。使用S32DS进行软件调试,同时进一步优化之前关于软件执行时间的测试。 调试,最简单方式就是查看我们关注的信息,比如变量和寄存器,看看他们的值有没有按照我们预期的变化。不过,这套工具似乎不支持相应信息的自动刷新,如果要查看的话需要让程序停住才能够查看。 之前我们写了一个简...原创 2018-08-29 22:16:42 · 630 阅读 · 0 评论 -
powerpc_004_测试代码到工程代码的转换
前面经过几次尝试,已经做出了一个简单的小功能:实现一个软件执行时间的检测,检测到的单位是系统时钟的周期。 如何能够把我们的代码变得更加工程化一点呢?那就是进行一个软件模块化的管理改进,毕竟,我们很难在一个C文件中把几十万行代码写完。 关于模块,我们这里的定义是包含一个或几个功能的几个代码文件,包括C文件与头文件。通常,一个...原创 2018-08-29 23:07:02 · 372 阅读 · 0 评论 -
powerpc_006_系统时钟配置
有一段小小的回忆值得说一下,关于系统时钟乃至锁相环的配置。这个应该是接触PowerPC嵌入式软件很早就该掌握的技能,但是我的这个技能迟到了很久。工作了好几年,都是站在别人的肩膀上,这让我总觉得脚底下空空的不安稳。也算是自己给了自己一点压力,开始了对底层更加深入的一点探索。 最初,说到系统时钟或者锁相环的时候,总觉得有点茫然。不是没有去翻查芯片手册,而是看了之后根本没看...原创 2018-09-10 00:45:26 · 805 阅读 · 0 评论 -
powerpc_007_系统时钟配置
这并不是一个重复的小结课题!从这一次小结开始,打算切换一个新的工程。少用汇编,多用C语言,毕竟C语言在工程实践中应用更加广泛。同时,切换一个ST的IDE,因为我发现这里面拥有类似ARM的SDK驱动代码生成方式。SDK的驱动代码生成并不是很新鲜的东西,但是ST的SPC5Studio是免费的,这就在学习上值得去尝试了。正好,我手头的MPC5634正好有ST与之对应兼容的芯片,SPC5...原创 2018-09-24 10:35:47 · 798 阅读 · 4 评论 -
powerpc_008_任务调度的简单实现
汽车电子实际的工程运用中用到的时间片轮转模式的调度还是居多,而SPC5Studio中的一个便于OS移植的一个抽象层模块OSAL是可以提供部分模拟功能的。这是一个必选的模块,因此配置上的难度比较低,初始就基本配置好了。 以下是初始的状态: 从上面的信息可以看出,系统时钟80M,OS的tick 1ms。此外,任务调度的中断优先级可以理解为4,按照我的理...原创 2018-09-24 12:01:25 · 440 阅读 · 0 评论 -
powerpc_009_数字输出的实现
程序设计中的第一步是实现一个hello world的输出,嵌入式类比的一个功能是LED的闪烁。 LED闪烁实验,一般是在各种基于中断的任务调度完成之前。不过,之前我自己使用的一个更简单的方式作为初步,那就是查看变量的变化。至于LED灯的测试,暂且往后放了。在工作学习的经历中,我喜欢有多个LED灯的开发板,这样我能够直观看到很多我想看的状态。 LED对应...原创 2018-09-24 13:00:19 · 355 阅读 · 0 评论 -
powerpc_010_基于OSAL的任务调度的接口封装
习惯了自己做一个裸的PIT调度,这里通过已经生成的OSAL的调度做一个封装。提供10ms、20ms、100ms的任务调度。 设计的大致思路,写一个PIT_10ms的fake interface,在里面实现任务调度的实现。而这个接口,在main函数中调用。封装完成之后,使用LED闪烁做一个测试。 调度相关的关键调度点修改: 几个调度接...原创 2018-09-24 14:27:14 · 354 阅读 · 0 评论 -
powerpc_011_简单的任务调度的优化改进
下面是之前实现的一个简单的任务调度的相关代码: 其实,简单的调度倒是不会有什么大的问题。不过,一个很大的问题点是10ms、20ms、100ms在执行的时间点上会有重合。如果能够做到更好的调度,应把它们拆开更加合理一点。这种拆分,依然使用10ms的时基进行拆分能够有一点改进,但是更好的方式应该是把时基拆分的更小,而每个任务调度的时间上限应该也增加相应的限制。这样,能...原创 2018-09-24 14:41:38 · 711 阅读 · 0 评论 -
Linux 0.12的任务调度猜测
学习Linux内核原理,看书的时候看到了Linux 0.12版本中对8254定时器芯片的利用只利用了一个0通道。这个通道在方式3下工作,每10ms产生一个信号中断请求。而这个终端控制请求就是Linux 0.12内核工作的脉搏。该信号用于任务的切换或者资源的统计。 从上面来看,当时的Linux系统的实时性应该还是一般的。这么看来,整个系统的执行基本上还是一个时间片轮转的方式。但是,倘原创 2017-08-20 14:56:24 · 616 阅读 · 0 评论