打印
[牛人杂谈]

不同编程语言之间的关系,太有趣了,不看后悔一辈子

[复制链接]
楼主: 598330983
手机看帖
扫描二维码
随时随地手机跟帖
81
734774645| | 2016-1-27 15:59 | 只看该作者 回帖奖励 |倒序浏览
好奇心害死牛,不过我是死眼牛,不怕死

使用特权

评论回复
82
598330983|  楼主 | 2016-1-28 15:23 | 只看该作者
新唐的m0系列大都支持IAP功能。IAP就是几块ROM中的程序/函数可以互相调用、切换。通俗一点就是APROM中的程序可以调用LDROM中的函数,LDROM中的程序可以调用APROM中的函数。对CPU来说它们都是同时可读的。同时,客户的应用程序可以放到APROM/LDROM的任何地址。下面为大家介绍一下使用的细节

使用特权

评论回复
83
598330983|  楼主 | 2016-1-28 15:26 | 只看该作者
涉及到的寄存器:
        CONFIG0中的CBS位。只要将该位设为10b或者00b就使能了IAP功能。设为10b从APROM启动并使能IAP,设为00b从LDROM启动并使能IAP。
        ISPCMD寄存器。该寄存器是用来指定要执行的ISP命令的,这些命令大都是用来读/写/擦除ROM的。有一个特殊命令Vector Page Remap,该命令用来重新映射向量表。因为cortex-m0指定向量表必须放到地址0的地方。如果程序放到地址非0的位置,向量表也就不在地址0的地方了,所以需要重新映射向量表。

使用特权

评论回复
84
598330983|  楼主 | 2016-1-28 15:34 | 只看该作者
所谓IAP就是In-Application Programming。
这个技术有2个关键点
1.        就是对CPU来说APROM和LDROM所有的空间都是可见的,这样用户的函数就可以放到APROM/LDROM的任何地方。
2.        客户的应用程序能放到APROM/LDROM的任何地址,而不必非要放在头部的位置。
Item1只要使能IAP功能,CPU就能“看”到所有的APROM和LDROM空间了。
Item2就涉及到向量表映射,就是Vector Page Remap命令。按照cotex-m0的架构,向量表必须要放到地址0的地方。如果客户将应用程序放到了地址非0的地方,例如:0x1000,则向量表就在0x1000的地方了,这时候如果发生中断,CPU从地址0的位置拿到的中断处理函数的地址就不正确了。这时候就需要用Vector Page Remap命令将地址0x1000位置的1个page映射到地址0。1个page大小就是512B。意思就是Vector Page Remap命令将0x1000 – 0x1200映射到了0x0 – 0x200。这个动作会导致一个副作用,就是地址0x1000 – 0x1200地方的代码除了向量表还有其他的代码,而这在IAP下是不允许的。怎样将在地址0x1000 – 0x1200的代码移到0x1200后面呢?编译器一般都提供了强大的武器——Link Script
我们以Keil为例说明Link Script的写法

使用特权

评论回复
85
598330983|  楼主 | 2016-1-28 15:35 | 只看该作者
/* 说明SRAM的基地址和SIZE ,并且将RW和ZI Data放到SRAM中*/
RAM1 0x20000000 0x10000  {    ; load region size_region
  
RW_IRAM1 +0  {  ; RW data
.ANY (+RW +ZI)
}
}

/* 说明应用程序基地址,也就是向量表RESET段的地址,如果不是0x00000000 ,例如:是0x1000,这里就填0x1000 */
ROM1 0x00001000
{
    IROM1 +0 {  ; load address = execution address
           *.o (RESET, +First)
           *.o (HANDLER)
                   *(InRoot$Sections)       
        }

}
/* 其它程序都放到0x1200后面 */
FLASH1 0x00001200
{
        FLASH1 0x00000200
      {               
                 .ANY (+RO)       
      }   
}


使用特权

评论回复
86
598330983|  楼主 | 2016-1-28 15:36 | 只看该作者
  ISPIAP的区别
  
  
更新APROM中的应用程序
应用程序可以在APROM任何地址执行
APROM中的程序可以调用LDROM中的函数
LDROM中的程序可以调用APROM中的函数
APROMLDROM中的程序切换,是否需要复位系统
ISP
Yes
No,只能从0开始执行
No
No
Yes
IAP
Yes
Yes
Yes
Yes
No
其实ISPIAP的一个子集。它们两个都可以实现更新应用程序的功能。但是只有IAP才能实现程序放到任何地方都能执行的功能:放到0x00x10000x4000,  0x100000(LDROM)ISP只能放到地址0x0执行,如果系统从APROM启动,APROM就在地址0x0的地方;如果系统从LDROM启动,LDROM就在地址0x0的地方。但是如果IAP使能,APROM的地址就固定在0x0LDROM的地址就固定在0x100000.
APROM中的程序更新之后,ISP需要复位系统,然系统重新启动
IAP则不需要,它只要修改栈寄存器r13,重新映射vector table,然后直接跳去新的应用程序执行就可以了。

使用特权

评论回复
87
598330983|  楼主 | 2016-1-28 15:38 | 只看该作者
向量表
向量表0的位置为栈地址,栈地址将用来初始化R13寄存器的值
向量表1的位置为复位中断处理函数,就是程序的入口

使用特权

评论回复
88
598330983|  楼主 | 2016-1-28 15:38 | 只看该作者
注意事项
不能在中断里面切vector table,并跳转去另一个APP

使用特权

评论回复
89
598330983|  楼主 | 2016-1-28 15:39 | 只看该作者
使用方法
我们的m0 IAP有两种使用方法,一种支持SystemReset或者不Reset的方式切换程序,一种只支持不Reset的方式切换程序。这里的Reset推荐使用SystemReset,而不是CPU reset。因为SystemReset会同时帮忙把所有的IP都复位掉,免得影响下一个程序的稳定性。其它的Reset例如:Chip reset, BOD reset, WDT reset,/RESET引脚等都不能用于IAP中程序切换。

使用特权

评论回复
90
598330983|  楼主 | 2016-1-28 15:40 | 只看该作者
IAP使用步骤
1)       使能IAP功能
2)       编写程序,包括Bootloader和APP
3)       分别下载Bootloader和App
4)       重新上电
不复位方式BootloaderAPP,或者两个APP之间切换的步骤
1)       为了安全起见复位所有的IP
outpw(&GCR->IPRST_CTL2, 0xFFFFFFFF);
           outpw(&GCR->IPRST_CTL2, 0);
2)       关闭所有中断
NVIC->ICER[0] = 0xFFFFFFFF;
3)       调用函数FMC_SetVectorPageAddr重新映射向量表
4)       spChange切栈地址
5)       跳转
复位方式BootloaderAPP,或者两个APP之间切换的步骤
1)       关闭所有中断
NVIC->ICER[0]= 0xFFFFFFFF;
2)       调用函数FMC_SetVectorPageAddr重新映射向量表
3)       系统复位
NVIC_SystemReset();

使用特权

评论回复
91
598330983|  楼主 | 2016-1-28 15:40 | 只看该作者
将应用程序编译到指定地址
假设APROM 的地址为 0 ~ Addr1,LDROM的地址为0x100000 ~ Addr2。Addr1和Addr2将随APROM和LDROM的大小不同而不同。到目前为止LDROM大都是4K的,APROM最大到128K。
地址有了之后,怎么把程序编译到这个地址执行呢?这就是编译器的事了,下面以Keil为例说明设定方法。下面的设定都以客户已经使能IAP为前提,如果没有使能IAP设定方**有所不同。IAP使能的方法,请看1.3.1节.

使用特权

评论回复
92
598330983|  楼主 | 2016-1-28 16:29 | 只看该作者
新唐科技强力推出高抗干扰NuMicro® M451全新系列产品,全系列以ARM® Cortex®-M4F为核心,规格上采用领先业界宽电压2.5V~ 5.5V供电及5V I/O规格,大幅增强系统可靠度,提供工业规格操作温度,最低为-40℃、最高达105℃,全温全压高精度内部RC 振荡 22.1184MHz +/- 2%,外挂32.768KHz晶振可自动校准至全温度误差到小于 +/- 0.25%,强悍提升系统抗干扰能力与充分满足对通讯精度规格要求,特别适合于工业控制、自动化系统、安全监控、车用电子、数字电源等高性能精密应用。特别设计的电压调整接口(Voltage Adjustment Interface, VAI),系统可独立调整I/O电压准位(1.8V~5.5V),不需再为周边组件调整接口电压差异而增加额外成本,且I/O输入设计5V容限能力,大幅提升系统整合与稳定能力。

使用特权

评论回复
93
598330983|  楼主 | 2016-1-28 16:30 | 只看该作者
新唐科技本次推出全系列共有33颗型号产品,包含M451基础系列、M452 USB功能系列、M453 CAN总线系列及脚位兼容Cortex®-M0微控制器M051的M451M系列,新唐科技擘划完整之产品线,可充分满足各层次产品对Cortex®-M4F的需求,实践对客户全方位协助、提升长期竞争力之承诺,并完整满足客户现在之开发需求及对未来的创新想象。

使用特权

评论回复
94
598330983|  楼主 | 2016-1-28 16:31 | 只看该作者
NuMicro® M451全系列采用内建数字信号处理单元(Digital Signal Processor, DSP)与浮点运算单元(Floating Point Unit, FPU)的ARM® Cortex®-M4F核心,具备高运算效能,可运行至72 MHz,内建256/128/72/40K Bytes程序内存(Flash ROM)、32/16K Bytes 数据存储器(SRAM),符合国际电子技术委员会(International Electrotechnical Commission, IEC) 60730标准,内存奇偶校验检查(Parity Check),硬件循环冗余校验(Cyclic Redundancy Check, CRC);内建在线升级程序(Boot ROM)可独立更新程序区(AP Flash ROM),另外配置额外独立4K Bytes在线升级内存区(In-System Programming Flash ROM),用户可自行开发更具弹性且支持多种外设UART, SPI, I2C, CAN 和USB在线升级程序代码。此外还支持外扩总线接口(External Bus Interface, EBI),使外接内存更灵活;全系列配置优异之规格:4组32位定时器(Timer)、双看门狗、嵌套中断向量控制器(Nested Vectored Interrupt Controller, NVIC),整合丰富的接口设备,如外围内存直接存取(Peripheral Direct Memory Access, PDMA)、实时时钟(Real Time Clocks, RTC)、5组通讯接口(UART)支持16层先进先出(First in First out, FIFO)、3组四线制串行总线接口(Serial Peripheral Interface, SPI)支持四线模式(Quad Mode)、2组I2C支持SMBus和PMBus、2组I2S、2组LIN、CAN总线、ISO-7816-3接口、全速USB OTG、全速USB设备、1 MSPS高转换速度之16信道12位模拟数字转换器(ADC),内建参考电压(Voltage Reference, Vref)产生电路、12位数字模拟转换器(DAC)、2组模拟比较器及温度传感器等特色,实践开发者对产品高整合度需求。M451全系列并提供高分辨率144MHz PWM脉宽调制,快速电机控制定时器,分辨率《 7ns,搭配驱动模拟数字转换器(ADC),具有硬件刹车保护和脉冲捕获功能,节省微控制器运算负担,有效执行马达控制所需之高阶计算,在工业自动化及马达控制等应用中极具优势。在芯片安全方面,M451全系列为保护客户之知识产权,设计了铜墙铁壁,包含Flash安全锁、防窜改侦测脚位、96位芯片唯一序号(Unique Identification, UID)及128位唯一客户序号(Unique Customer Identification, UCID),为开发程序提供多重保护。

使用特权

评论回复
95
598330983|  楼主 | 2016-1-28 16:34 | 只看该作者
M451全系列已量产,产品采用LQFP48 (7mm x 7mm)、LQFP64 (10mm x 10mm)与LQFP100 (14mm x 14mm)封装。

使用特权

评论回复
96
拙见成章| | 2016-1-28 22:59 | 只看该作者
看看,学习ing

使用特权

评论回复
97
piaopiaocici12| | 2016-1-29 08:38 | 只看该作者
辛苦辛苦!

使用特权

评论回复
98
yiyigirl2014| | 2016-1-29 11:49 | 只看该作者

Linux 内核的功能以及它和 GPL 的结合,使许多软件开发人员相信这是有前途的项目,
开始参加内核的开发工作。并将 GNU 项目的 C 库、gcc、Emacs、bash 等很快移植到 Linux 内
核上来。可以说,Linux 项目一开始就和 GNU 项目紧密结合在一起,系统的许多重要组成部
分直接来自 GNU 项目。 Linux 操作系统的另一些重要组成部分则来自加利福尼亚大学 Berkeley
分校的 BSD UNIX 和麻省理工学院的 X Window 系统项目。这些都是经过长期考验的成果。
正是 Linux 内核与 GNU 项目、BSD UNIX 以及 MIT 的 X11 的结合,才使整个 Linux 操作系
统得以很快形成,而且建立在稳固的基础上。


使用特权

评论回复
99
xhdzwzj| | 2016-1-30 10:35 | 只看该作者
后悔一辈子的人有多少

使用特权

评论回复
100
tanzhongbao1109| | 2016-1-30 14:06 | 只看该作者
什么内容,非常的想看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则