大家都很忙

本文深入解析了MOTORALA公司的MPC860嵌入式平台,涵盖了其功能框架结构、硬件接口、中断结构及汇编语言等关键技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点开电影天堂的网页,发现几天没上来,又更新了不少2009的电影。

世界各地的人都在忙活,拍电影的,搞音乐的,做研究的……为了生活,也为了在世间的一个名。

今天的计划之一是把这几年的工作平台总结一下。

从2004年开始接触这一领域,也有了一些积累,从一开始的intel的pxa255平台,到三星的S3C2410,再到工作以后的Motorola的PQ和PQ2,还有正在写的一个操作系统基于的X86平台。

早期的PXA和S3C2410很久没有去弄了,很多东西都已经淡忘了,这次主要总结一下PQ2,PQ2pro和X86平台。好,趁肚子还没有饿的无法支撑之前先把第一个进行了,差点忘了,今天的家务计划还没有进行呢,午饭后进行。

每部分总结分为这样四个部分进行:1,功能框架结构, 2,硬件接口,3,中断结构,4,汇编

一,PQ

1.1功能框架结构

PQ(Power QUICC(Quad Integrated Communications Controller))系列芯片,是MOTORALA公司将PowerPC内核涉及到SOC芯片之中,RISC,专注于嵌入式通信市场的通信处理器。PQ系列最具代表性的是MPC860芯片。

PQ系列处理器一般有三个功能模块组成,PowerPC核,系统接口单元和通信处理模块。这三个模块之间的内部总线是32位,以DMA方式进行通信。记起我的一个mentor常说,在开会或者写简报时,多用图,图能节省很多阅读者的时间并能提起阅读者的兴趣还能加速他们对你讲述的东西的理解,有很多好处,这里我也上一个图,从别处截过来的,有用就行,英雄不问出处。

MPC860

图片有些不清晰,肚子有些饿了,我想节省时间把这部分结束,清晰的图片稍后再补上。

PowerPC核是主要的处理单元,它包括数据和指令的缓存,存储器管理单元(MMU),在40M时钟时为50MIPS速度。

系统接口单元包括:总线监视器,软件看门狗,中断定时器和实时时钟,复位控制器,JTAG测试口。功能很多也很杂,总起来说,它最最重要的功能主要是提供内部总线和外部总线的接口。

通信处理模块(CPM),她是860内部又一个32位的RISC内核,这里用她来指代,因为对于她太有感情了,我的所有开发调试工作都和她有关,整天有事没事都在翻阅她,抚摸她(有些YY了,过),PowerPC核主要执行高层代码,完成粗粒度的功能操作,而CPM在处理实际通信中的低层通信功能。她包括一个RISC控制器,16个串行DMA通道(SDMA),两个串行通信控制器(SCC),两个串行管理控制器(SMC),一个通用串行总线通道(USB),一个I2C接口和一个串行外围电路(SPI),可以通过灵活的编程方式实现对Ethenet,USB,T1/E1,ATM,HDLC,UART等的支持。

1.2 硬件接口

MPC860存储管理提供了8个存储器的片选信号,它可以与SRAM,EPROM,FLASH,SDRAM等实现无缝连接。与外存储器的接口信号有

1,数据总线:32位

2,地址总线:32位

3,控制总线片选:cs0-cs7

 

1.3 中断结构

MPC860的整个中断体系结构有三个模块:PowerPC核,SIU中断控制器和CPM中断控制器。PowerPC是指令执行单元,使用异常的目的就是要打断它的正常执行,使它转入处理紧急事件的异常处理程序中执行。对于每一类异常,异常发生后PowerPC要跳转到执行的位置是不同的。这些不同的位置组成了一个表-异常向量表,又在补充基本知识了:)。不同类型的异常在异常向量表中的偏移量不同,这些都是在系统启动的时候设置好的。如系统重启异常在表中偏移量是0x100,外部中断在异常向量表中的偏移量是0x500等等。

SIU中断控制器负责管理8个外部中断源(IRQ0-7)和8个内部中断源(Level0-7)。其中IRQ0一般用作不可屏蔽中断,通过NMI想PowerPC内核请求中断,其余15个通过IREQ请求中断。对于8个内部中断源,包括周期性的中断时钟(PIT),实时时钟(RTC),PCMCIA和CPM等,用户可以通过对寄存器的操作,把它们设定为level0-7中的任何一级。这16个中断源之间的优先级SIU中断控制器已经设定了。其中IRQ0的优先级最高,level0其次,IRQ1再次,一次类推,level7的优先级最低。

在SIU中断控制器进行SIU中断处理时,有几个重要的寄存器与之相关:它们是中断pending寄存器SIPEND,中断屏蔽寄存器SIMASK和中断向量寄存器SIVEC。

CPM中断控制器是对SIU中断控制器的下一级扩展。它管理通信处理模块中的各个中断,并向SIU中断控制器申请中断处理。CPIC(CPM中断控制器)接收12个外部中断源和17个内部中断源的中断请求,经过屏蔽和判优处理后,把中断请求送往SIU中断控制器。通过设置CPIC的配置寄存器,CPM在SIU中断控制器中的优先级可以是level0-7中的任何一级,并且所有的CPM中断源都将以这个优先级向SIU申请中断。在CPM中断控制器内部,它也是为每个中断源分配了一个中断向量号,并且分配了不同的优先级,还可以编程设定哪个中断源为最高优先级。

CPM中断控制器提供了一些可编程寄存器,通过对这些寄存器进行设置,可以设定COM中断控制器的工作方式。这些寄存器分别是CPM中断配置寄存器CICR,CPM中断屏蔽寄存器CIMR,CPM中断向量寄存器CIVR,CPM中断彭定寄存器CIPR,CPM中断服务寄存器CISR。

 

1.4 汇编

这一章节有点大,我还真不知道如何能快速有效的介绍,先去吃饭了,边吃边思考一下这个问题!

吃饭归来,味觉盛宴结束。

回到汇编这一块,个人觉得掌握一个平台的汇编主要看两块:一是CPU寄存器,二是操作指令。不同平台的汇编所能产生的差异也只能体现在这两块。

CPU寄存器

PowerPC处理器有32个通用寄存器(GPR),和一些专用寄存器:PC(程序寄存器),LR(链接寄存器),CR(条件寄存器),MSR(机器状态寄存器),XER(定点异常寄存器)。

由于PowerPC拥有如此多的GPR(IA32只有8个),所以传递参数的寄存器从GPR3开始。寄存器GPR3到GPR12是易失型寄存器,如果需要的话,在调用子例程之前必须保存它们并在返回之后回复它们。

GPR1用来作为栈帧指针。

以上内容由应用程序二进制接口(ABI)规定。

PPC32 Linux和NetBSD使用 SVR4 ABI
PPC64 Linux和AIX   使用 PowerOpen ABi

操作指令

所有的PowerPC都是32位指令。PowerPC处理模型要从内存检索数据,在寄存器中对它进行操作,然后将它存储回内存,几乎没有指令(除了装入和存储)是直接操作内存的。

PowerPC汇编需要一个目标寄存器用于所有寄存器到寄存器的操作。

常用的指令举例:

li REG, VALUE
加载寄存器 REG,数字为 VALUE

add REGA, REGB, REGC
将 REGB 与 REGC 相加,并将结果存储在 REGA 中

addi REGA, REGB, VALUE
将数字 VALUE 与 REGB 相加,并将结果存储在 REGA 中

mr REGA, REGB
将 REGB 中的值复制到 REGA 中

or REGA, REGB, REGC
对 REGB 和 REGC 执行逻辑 “或” 运算,并将结果存储在 REGA 中

ori REGA, REGB, VALUE
对 REGB 和 VALUE 执行逻辑 “或” 运算,并将结果存储在 REGA 中

and, andi, xor, xori, nand, nand, and nor
其他所有此类逻辑运算都遵循与 “or” 或 “ori” 相同的模式

ld REGA, 0(REGB)
使用 REGB 的内容作为要载入 REGA 的值的内存地址

lbz, lhz, and lwz
它们均采用相同的格式,但分别操作字节、半字和字(“z” 表示它们还会清除该寄存器中的其他内容)

b ADDRESS
跳转(或转移)到地址 ADDRESS 处的指令

bl ADDRESS
对地址 ADDRESS 的子例程调用

cmpd REGA, REGB
比较 REGA 和 REGB 的内容,并恰当地设置状态寄存器的各位

beq ADDRESS
若之前比较过的寄存器内容等同,则跳转到 ADDRESS

bne, blt, bgt, ble, and bge
它们均采用相同的形式,但分别检查不等、小于、大于、小于等于和大于等于

std REGA, 0(REGB)
使用 REGB 的地址作为保存 REGA 的值的内存地址

stb, sth, and stw
它们均采用相同的格式,但分别操作字节、半字和字

sc
对内核进行系统调用

所有计算值的指令均以第一个操作数作为目标寄存器。在所有这些指令中,寄存器都仅用数字指定。例如,将数字 12 载入寄存器 5 的指令是 li 5, 12。我们知道,5 表示一个寄存器,12 表示数字 12,原因在于指令格式(因为li第一个操作数就是寄存器。这点与IA32不同,intel对每个寄存器都进行了命名。

第一部分到此为止,家庭大扫除要开始了!

<think>好的,用户想知道前端开发如何利用碎片化时间学习。这个问题挺常见的,特别是现在大家都很忙,时间比较分散。首先,我需要考虑用户的具体情况,可能他们是在工作之余学习,或者有其他事情占据大部分时间,所以想高效利用零散时间。 用户可能已经有基础的前端知识,想进一步提升,但不知道怎样安排碎片时间。这时候需要提供一些切实可行的方法,而不是泛泛而谈。比如,如何在通勤、午休等时间段学习,或者利用哪些工具和资源。 接下来,我应该分步骤来思考。首先,碎片化时间的特点是什么?通常每次5到30分钟,注意力容易分散,所以学习内容需要短小、模块化,容易随时中断和继续。然后,前端开发的知识点很多,哪些适合碎片化学习?比如CSS属性、JavaScript小技巧、框架的API文档等。 然后,具体的方法可能包括:使用学习APP或网站,比如Codecademy、freeCodeCamp的微课;阅读技术博客或文档,比如MDN Web Docs;练习小项目或代码片段;参与技术社区讨论;听技术播客或看短视频教程;使用记忆卡片工具复习知识点等。 同时,用户可能担心碎片化学习的效果,所以需要强调系统化整理的重要性,比如每周总结,将零散的知识点整合到项目中。另外,避免信息过载,选择高质量的资源也很关键。 还要考虑用户的学习习惯,比如喜欢看视频还是读文章,喜欢动手写代码还是理论学习。所以建议多样化的学习方式,适应不同场景。 最后,需要提醒用户保持持续性,即使每天只有10分钟,积累起来也会有进步。同时,结合项目实践,将学到的知识应用到实际中,加深理解。</think>以下为前端开发者利用碎片化时间学习的结构化方案,分步骤落实可操作性: 一、知识模块拆分策略 $$学习单元 = 15\text{分钟} \times \text{知识点粒度}$$ 1. 微型知识单元库建设: - CSS:选择器权重计算、Flex布局速记、Grid模板语法 - JavaScript:ES6+新特性速查、常见算法模式(双指针/滑动窗口) - 框架:Vue3组合式API速记、React Hooks使用场景 二、工具链配置方案 1. 移动端开发环境: ```bash $ npm install -g @code-server/server # 搭建移动版VS Code $ sshfs user@dev-machine:/projects ~/mnt # 挂载远程项目 ``` 2. 学习工具组合: - GitPod:浏览器即开即用IDE - ObservableHQ:交互式Notebook - FrontendMasters:移动端适配课程 三、场景化学习矩阵 | 时间段 | 学习模式 | 示例内容 | |----------|---------------------------|-----------------------------------| | 通勤15m | 音频学习 | Syntax.fm技术播客 | | 午休20m | 交互练习 | Codepen挑战/LeetCode Easy题 | | 等待10m | 文档速读 | MDN新API浏览/ECMA规范变更 | | 睡前30m | 项目重构 | 组件抽象/性能优化实践 | 四、知识沉淀系统 $$知识保留率 = \sum_{n=1}^{7} e^{-0.5n} \cdot 复习次数_n$$ 1. Anki记忆曲线配置: ```javascript { "算法": { interval: [1,3,7], difficulty: 0.2 }, "框架原理": { interval: [2,5,9], difficulty: 0.5 } } ``` 2. 代码片段管理: ```markdown ## 性能优化 ```js // IntersectionObserver懒加载 const observer = new IntersectionObserver(callback, { rootMargin: '50% 0px' }); ``` ``` 五、效果验证机制 1. 构建量化指标: $$每周产出量 = \sum (代码片段 \times 0.3 + 文档贡献 \times 0.2 + Issue解决 \times 0.5)$$ 2. 建立反馈循环: - 每月进行技术雷达扫描 - 使用Lighthouse进行渐进式评分 - 参与开源项目PR提交 建议每天保持30分钟碎片时间的刻意练习,配合周末2小时的系统整合,形成完整的学习闭环。重点在于将离散知识点通过项目上下文串联,例如将学习的Web Worker知识立即应用于图片处理功能的优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值