c语言实现subs指令,周立功LPC系统移植学习之c启动代码修改一

2023-05-16

一.系统移植用c启动代码

;/****************************************Copyright (c)**************************************************

;**                               Guangzou ZLG-MCU Development Co.,LTD.

;**                                      graduate school

;**                                 http://www.zlgmcu.com

;**

;**--------------File Info-------------------------------------------------------------------------------

;** File name:     Startup.s

;** Last modified Date: 2004-09-17

;** Last Version:    1.0

;** Descriptions:    The start up codes for LPC2200, including the initializing codes for the entry point of exceptions and the stacks of user tasks.

;**     Every project should have a independent copy of this file for related modifications

;**------------------------------------------------------------------------------------------------------

;** Created by:     Chenmingji

;** Created date:      2004-02-02

;** Version:    1.0

;** Descriptions:    The original version

;**

;**------------------------------------------------------------------------------------------------------

;** Modified by:    Chenmingji

;** Modified date:   2004-09-17

;** Version:    1.01

;** Descriptions:    Modified the bus setting to adapt for many common situations

;**

;**------------------------------------------------------------------------------------------------------

;** Modified by:    Chenmingji

;** Modified date:   2004-09-17

;** Version:    1.02

;** Descriptions:    Added codes to support the enciphering of the chip

;**

;**------------------------------------------------------------------------------------------------------

;** Modified by:    Chenmingji

;** Modified date:   2004-09-17

;** Version:    1.04

;** Descriptions:    Renewed the template, added codes to support more compilers

;**

;**------------------------------------------------------------------------------------------------------

;** Modified by:

;** Modified date:

;** Version:

;** Descriptions:

;**

;********************************************************************************************************/

;define the stack size

;定义堆栈的大小

FIQ_STACK_LEGTH         EQU         0

IRQ_STACK_LEGTH         EQU         9*8             ;every layer need 9 bytes stack , permit 8 layer .每层嵌套需要9个字堆栈,允许8层嵌套

ABT_STACK_LEGTH         EQU         0

UND_STACK_LEGTH         EQU         0

NoInt       EQU 0x80

USR32Mode   EQU 0x10

SVC32Mode   EQU 0x13

SYS32Mode   EQU 0x1f

IRQ32Mode   EQU 0x12

FIQ32Mode   EQU 0x11

PINSEL2     EQU 0xE002C014

BCFG0       EQU 0xFFE00000

BCFG1       EQU 0xFFE00004

BCFG2       EQU 0xFFE00008

BCFG3       EQU 0xFFE0000C

IMPORT __use_no_semihosting_swi

IMPORT __use_two_region_memory

;The imported labels

;引入的外部标号在这声明

IMPORT FIQ_Exception                   ;Fast interrupt exceptions handler 快速中断异常处理程序

IMPORT __main                          ;The entry point to the main function C语言主程序入口

IMPORT TargetResetInit                 ;initialize the target board 目标板基本初始化

IMPORT SoftwareInterrupt

;The emported labels

;给外部使用的标号在这声明

EXPORT bottom_of_heap

EXPORT bottom_of_Stacks

EXPORT top_of_heap

EXPORT StackUsr

EXPORT Reset

EXPORT __user_initial_stackheap

CODE32

AREA    vectors,CODE,READONLY

ENTRY

;interrupt vectors

;中断向量表

Reset

LDR     PC, ResetAddr

LDR     PC, UndefinedAddr

LDR     PC, SWI_Addr

LDR     PC, PrefetchAddr

LDR     PC, DataAbortAddr

DCD     0xb9205f80

LDR     PC, [PC, #-0xff0]

LDR     PC, FIQ_Addr

ResetAddr           DCD     ResetInit

UndefinedAddr       DCD     Undefined

SWI_Addr            DCD     SoftwareInterrupt

PrefetchAddr        DCD     PrefetchAbort

DataAbortAddr       DCD     DataAbort

Nouse               DCD     0

IRQ_Addr            DCD     0

FIQ_Addr            DCD     FIQ_Handler

;未定义指令

Undefined

B       Undefined

;取指令中止

PrefetchAbort

B       PrefetchAbort

;取数据中止

DataAbort

B       DataAbort

;快速中断

FIQ_Handler

STMFD   SP!, {R0-R3, LR}

BL      FIQ_Exception

LDMFD   SP!, {R0-R3, LR}

SUBS    PC, LR, #4

;/*********************************************************************************************************

;** unction name 函数名称: InitStack

;** Descriptions 功能描述: Initialize the stacks 初始化堆栈

;** input parameters 输 入:   None 无

;** Returned value   输 出 : None 无

;** Used global variables 全局变量: None 无

;** Calling modules 调用模块: None 无

;**

;** Created by    作 者: Chenmingji 陈明计

;** Created Date 日 期: 2004/02/02 2004年2月2日

;**-------------------------------------------------------------------------------------------------------

;** Modified by 修 改:

;** Modified date 日 期:

;**-------------------------------------------------------------------------------------------------------

;********************************************************************************************************/

InitStack

MOV     R0, LR

;Build the SVC stack

;设置中断模式堆栈

MSR     CPSR_c, #0xd2

LDR     SP, StackIrq

;Build the FIQ stack

;设置快速中断模式堆栈

MSR     CPSR_c, #0xd1

LDR     SP, StackFiq

;Build the DATAABORT stack

;设置中止模式堆栈

MSR     CPSR_c, #0xd7

LDR     SP, StackAbt

;Build the UDF stack

;设置未定义模式堆栈

MSR     CPSR_c, #0xdb

LDR     SP, StackUnd

;Build the SYS stack

;设置系统模式堆栈

MSR     CPSR_c, #0xdf

LDR     SP, =StackUsr

MOV     PC, R0

;/*********************************************************************************************************

;** unction name 函数名称: ResetInit

;** Descriptions 功能描述: RESET 复位入口

;** input parameters 输 入:   None 无

;** Returned value   输 出 : None 无

;** Used global variables 全局变量: None 无

;** Calling modules 调用模块: None 无

;**

;** Created by    作 者: Chenmingji 陈明计

;** Created Date 日 期: 2004/02/02 2004年2月2日

;**-------------------------------------------------------------------------------------------------------

;** Modified by 修 改: Chenmingji 陈明计

;** Modified date 日 期: 2004/02/02 2004年3月3日

;**-------------------------------------------------------------------------------------------------------

;********************************************************************************************************/

ResetInit

;Initial the extenal bus controller

;初始化外部总线控制器,根据目标板决定配置

LDR     R0, =PINSEL2

IF :DEF: EN_CRP

LDR     R1, =0x0f814910

ELSE

LDR     R1, =0x0f814914

ENDIF

STR     R1, [R0]

LDR     R0, =BCFG0

LDR     R1, =0x1000ffef

STR     R1, [R0]

LDR     R0, =BCFG1

LDR     R1, =0x1000ffef

STR     R1, [R0]

;        LDR     R0, =BCFG2

;        LDR     R1, =0x2000ffef

;        STR     R1, [R0]

;        LDR     R0, =BCFG3

;        LDR     R1, =0x2000ffef

;        STR     R1, [R0]

BL      InitStack               ; Initialize the stack 初始化堆栈

BL      TargetResetInit         ; Initialize the target board 目标板基本初始化

; Jump to the entry point of C program 跳转到c语言入口

B       __main

;/*********************************************************************************************************

;** unction name 函数名称: __user_initial_stackheap

;** Descriptions 功能描述: Initial the function library stacks and heaps, can not deleted!   库函数初始化堆和栈,不能删除

;** input parameters 输 入:   reference by function library 参考库函数手册

;** Returned value   输 出 : reference by function library 参考库函数手册

;** Used global variables 全局变量: None 无

;** Calling modules 调用模块: None 无

;**

;** Created by    作 者: Chenmingji 陈明计

;** Created Date 日 期: 2004/02/02 2004年2月2日

;**-------------------------------------------------------------------------------------------------------

;** Modified by

;** Modified date

;**-------------------------------------------------------------------------------------------------------

;********************************************************************************************************/

__user_initial_stackheap

LDR   r0,=bottom_of_heap

;    LDR   r1,=StackUsr

LDR   r2,=top_of_heap

LDR   r3,=bottom_of_Stacks

MOV   pc,lr

StackIrq           DCD     IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4

StackFiq           DCD     FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4

StackAbt           DCD     AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4

StackUnd           DCD     UndtStackSpace + (UND_STACK_LEGTH - 1)* 4

;/*********************************************************************************************************

;** unction name 函数名称: CrpData

;** Descriptions 功能描述: encrypt the chip

;** input parameters 输 入:   None 无

;** Returned value   输 出 : None 无

;** Used global variables 全局变量: None 无

;** Calling modules 调用模块: None 无

;**

;** Created by    作 者: Chenmingji 陈明计

;** Created Date 日 期: 2004/03/27 2004年3月27日

;**-------------------------------------------------------------------------------------------------------

;** Modified by 修 改:

;** Modified date 日 期:

;**-------------------------------------------------------------------------------------------------------

;********************************************************************************************************/

IF :DEF: EN_CRP

IF . >= 0x1fc

INFO    1,"\nThe data at 0x000001fc must be 0x87654321.\nPlease delete some source before this line."

ENDIF

CrpData

WHILE . < 0x1fc

NOP

WEND

CrpData1

DCD     0x87654321          ;/*When the Data is 为0x87654321,user code be protected. 当此数为0x87654321时,用户程序被保护 */

ENDIF

;/* 分配堆栈空间 */

AREA    MyStacks, DATA, NOINIT, ALIGN=2

IrqStackSpace      SPACE   IRQ_STACK_LEGTH * 4 ;Stack spaces for Interrupt ReQuest Mode 中断模式堆栈空间

FiqStackSpace      SPACE   FIQ_STACK_LEGTH * 4 ;Stack spaces for Fast Interrupt reQuest Mode 快速中断模式堆栈空间

AbtStackSpace      SPACE   ABT_STACK_LEGTH * 4 ;Stack spaces for Suspend Mode 中止义模式堆栈空间

UndtStackSpace     SPACE   UND_STACK_LEGTH * 4 ;Stack spaces for Undefined Mode 未定义模式堆栈

AREA    Heap, DATA, NOINIT

bottom_of_heap    SPACE   1

AREA    StackBottom, DATA, NOINIT

bottom_of_Stacks    SPACE   1

AREA    HeapTop, DATA, NOINIT

top_of_heap

AREA    Stacks, DATA, NOINIT

StackUsr

END

;/*********************************************************************************************************

;**                            End Of File

;********************************************************************************************************/

二.启动代码修改部分及说明

1.堆栈的变化

1)IRQ_STACK_LEGTH的调整IRQ_STACK_LEGTH         EQU         9*8             ;every layer need 9 bytes stack , permit 8 layer .每层嵌套需要9个字堆栈,允许8层嵌套。

UC/OSII中断管理:中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。嵌套层数设置的越多中断占用的堆栈越大,对RAM需求越大,嵌套层数减少会影响实时性能。

在UC/OSII中,内核为中断嵌套的层数定义了一个全局变量OSIntNesting(区别于目的是实现临界段嵌套的关中断的计数器OsEnterSum) 。系统在进行任务调度时,先要判断OSIntNesting是否为0,如果OSIntNesting不为0,则不进行任务切换。也就是说:在OSIntNesting为1(当前只有一个中断,并且没有嵌套中断)时,如果发生了嵌套的中断(不管嵌套的层数有多深),那么所有嵌套的中断一层一层地都返回,直到OSIntNesting再次为1时止,任务栈是不会切换的,栈指针始终在同一个任务的栈空间中变化。

字长度:每一次中断需入栈的寄存器有R0-R3,R12,LR,SPSR,共7个,再加上c语言的中断处理函数会将一些数据压入堆栈。

2)StackSvc的变化:SVC_STACK_LEGTH     EQU         32在Os_cpu_a.s中定义,方便软件中断SoftwareInterrupt调用,需能入栈17寄存器CPSR,OsEnterSum,R0-R12,LR,SP,所以应该是大于17的字数。2.向量表的变化

1)

SoftwareInterrupt              去除,SWI_Addr    DCD     SoftwareInterrupt将跳转到Os_cpu_a.s中,

B       SoftwareInterrupt

uc/os2假定任务切换是靠中断级代码完成的。uc/os2需要的是一条处理器指令,其行为就像是硬件中断(所以成为软中断)。    SWI(software interrupt)软件中断,由用户定义的中断指令.可以用于用户模式下的程序调用特权操作指令.在实时操作系统中可以通过该机制实现系统调用.一个 SWI 所做的一切就是把模式改变成超级用户并设置 PC 来执行在地址 &08 处的下一个指令!       编程异常通常叫做软中断.软中断是通讯进程之间用来模拟硬中断的一种信号通讯方式。中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言实现subs指令,周立功LPC系统移植学习之c启动代码修改一 的相关文章

  • 内核必须懂(三): 重编Ubuntu18.04LTS内核4.15.0

    目录 前言编译前准备编译安装重启之后最后 前言 之前在写系统调用的时候也说过 但是当时理解有限 写的不好 这次再重新编译内核 分享经验 编译前准备 首先补包 sudo apt get install build essential kern
  • STL视频_01

    ZC xff1a 这里视频里面有一个调试小技巧 xff0c VS08 VS2010开始 xff0c 控制台程序会自动退出 xff08 不像VC6 xff09 xff0c 那么可以在 函数退出的最后一句语句上设置断点 xff0c 然后查看控制
  • 四轴自适应控制算法的一些尝试开源我的山猫飞控和梯度在线辨识自适应等算法—(转)...

    本文的最主要目的在于抛砖引玉 xff0c 阿莫论坛真的是非常好的一个论坛 xff0c 没有这个论坛 xff0c 没有那么多这个论坛上的前人无私的奉献和热烈的讨论 xff0c 我想我是怎么也无法入门四轴的控制的 只是论坛上已经很多年都没有看到
  • ubuntu VNC连接树莓派

    其实ubuntu vnc连接树莓派很简单 xff0c 首先给树莓派安装vnc服务 xff0c 然后打开vnc服务 xff0c 最后ubuntu用远程桌客户端测试连接就好了 不过要注意连接前一定要打开vnc服务 xff0c 树莓派连接要有控制
  • nuttx学习-0:模拟安装

    一 Nuttx 模拟运行环境的安装 xff1a 1 文件要求 xff0c 主要需要三个文件 xff1a nuttx 7 24 tar apps 7 24 tar nuttx tools tar 2 环境要求 xff1a sudo apt g
  • ORB-SLAM3 安装运行

    ORB SLAM3 安装运行 1 Pangolin 安装2 ORB SLAM3安装3 数据集测试3 1 EuRoC 双目 43 IMU测试3 2 TUM VI 双目鱼眼 43 IMU测试3 3 ROS接口3 3 1 启动EUROC 双目 4
  • ros:出现:error: ros/ros.h: No such file or directory

    出现这个问题是因为在cmakelist txt中没有声明对roscpp的依赖 在find package中添加roscpp 重新执行就ok了 转载于 https www cnblogs com fuhang p 9934092 html
  • IOS-如何优雅地拦截按钮事件(判断是否需要登录)

    关于这个标题 xff0c 起因是这样的 最近一次做项目需求时 xff0c 遇到这样一个需求 xff0c 就是本来我们App是必须注册或者第三方登录才可以使用 xff0c 现在希望不登录也可以浏览App里面的内容 xff0c 只是在需要的时候
  • postman安装使用教程---图文讲解

    一 安装postman 1 xff0c 安装包安装 官网下载地址 https www getpostman com 选择好对应的版本下载 下载完后直接安装 2 xff0c 插件包安装 可以在谷歌的应用商店里面找到 或者在网上下载 准备了一个
  • ArUco----一个微型现实增强库的介绍及视觉应用(一)

    ArUco 一个微型现实增强库的介绍及视觉应用 xff08 一 xff09 ArUco 一个微型现实增强库的介绍及视觉应用 xff08 一 xff09 一 ArUco简介 ArUco是一个开源的微型的现实增强库 xff0c 目前好像已经集成
  • matlab 图像基本矩阵,MATLAB基本的使用方法归纳(图像,矩阵及函数)

    读取图像 xff1a 用imread函数读取图像文件 xff0c 文件格式可以是TIFF JPEG GIF BMP PNG等 比如 gt gt f 61 imread 39 chestxray jpg 39 读进来的图像数据被保存在变量f中
  • VR直播云服务解决方案

    VR直播 通过VR xff08 虚拟现实 xff09 技术 xff0c 用户通过佩戴相关硬件设备 xff0c 通过平台提供的APP进行直播观看 主播需采用360 全景的拍摄设备 xff0c 捕捉多角度画面 xff0c 进行多画面传输后 xf
  • VirtualBox快照(Snapshot)功能使用及注意事项

    这几天在使用QT编写一个ARM的图形化应用程序 xff0c 需要在PC端使用linux下的QtCreator 搭建环境神马的还是挺麻烦的一个过程 依照我的风格 xff0c 这么麻烦的东西一定不要重复做第二遍 剧透下 xff0c 最后还是很悲
  • docker学习笔记11:Dockerfile 指令 CMD介绍

    我们知道 xff0c 通过docker run 创建并启动一个容器时 xff0c 命令的最后可以指定容器启动后在容器内立即要执行的指令 xff0c 如 xff1a docker run i t ubunu bin bash 表示容器启动时立
  • 麦克纳姆轮运动学分析

    麦克纳姆轮运动学分析 是最常见的安装方式 麦轮底盘的正逆运动学模型 以O 长方形的安装方式为例 xff0c 四个轮子的着地点形成一个矩形 正运动学模型 xff08 forward kinematic model xff09 将得到一系列公式
  • 传小米秘密自研操作系统mios 将应用于小米4(

    http tieba baidu com f kw 61 E5 8D 97 E4 BA AC E8 85 8B E8 87 AD E5 8C BB E9 99 A2 E3 80 90 E5 92 A8 E8 AF A2QQ EF BC 9A
  • OV2SLAM 安装运行

    OV2SLAM 安装运行 1 安装依赖项1 1 安装 OpenGV1 2 安装OV2SLAM 2 运行 OV2SLAM2 1 运行EUROC数据集2 2 运行KITTI数据集 参考资料 OV2SLAM 1 是2021年新开源出来的单目 43
  • IMU助力无人机自主精准着陆

    一盒用户急需的药品由无人机配送到小区中 xff0c 一键下单10分钟热气腾腾的外卖随着无人机送到家门口 这不是科幻作品中才有的景象 xff0c 而是已经实现的场景 但在实际应用中 xff0c 无人机配送还存在着预估位移不准确 着陆偏差过大等
  • Maven自动FTP远程部署

    参照官网文档 xff1a https maven apache org plugins maven deploy plugin examples deploy ftp html 1 在pom xml中加入 xff1a lt project
  • 面试感悟----一名3年工作经验的程序员应该具备的技能

    原文地址http www cnblogs com xrq730 p 5260294 html xff0c 转载请注明出处 xff0c 谢谢 xff01 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结 xff0c 因此有了这

随机推荐

  • c语言菜单经典实例

    include lt conio h gt include lt dos h gt include lt graphics h gt include lt stdio h gt include lt stdlib h gt 定义一些常数 d
  • Docker(二):微服务教程

    Docker 是一个容器工具 xff0c 提供虚拟环境 很多人认为 xff0c 它改变了我们对软件的认识 站在 Docker 的角度 xff0c 软件就是容器的组合 xff1a 业务逻辑容器 数据库容器 储存容器 队列容器 xff0c Do
  • 让进程在后台可靠运行的几种方法

    Linux 技巧 xff1a 让进程在后台可靠运行的几种方法 想让进程在断开连接后依然保持运行 xff1f 如果该进程已经开始运行了该如何补救 xff1f 如果有大量这类需求如何简化操作 xff1f 我们经常会碰到这样的问题 xff0c 用
  • 小米路由器mini拆解,附上独家对MT7620A见解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 小米路由mini采用单核MT7620A处理器 xff0c 搭配128MB DDR3 xff0c 内置智能家居控制中心 xff0c 和标准版一样提供2x2双频天线 xff0c
  • 采购收货的异常

    仓库发OA过来 xff0c 说有一票采购订单收货的时候提示红灯错误 xff0c 截图如下 xff1a 双击错误消息 xff0c 提示该消息是出自于M7429 百度 xff0c 没有相关资料 问群里 xff0c 也没人懂 于是通过 H 来查看
  • 【ES6基础】解构赋值(destructuring assignment)

    我们经常可以在其他编程语言 如GO语言 中看到多返回值这种特性 xff0c 因为在很多实际场景中 xff0c 函数的返回值中 xff0c 函数的返回值并不只有一个单一的值 ES6之前 xff0c 并没有可以直接使用语法来实现多返回值的特性
  • 视觉导航小车开源项目(1)—小车底盘

    小车底盘 1 更新日志1 1 硬件方面1 2 软件方面 2 底盘硬件结构2 1 底盘机械组装2 2 底盘硬件框图2 3 底盘电气系统 3 差速底盘软件结构3 1 控制板介绍3 2 代码结构3 3 差速底盘运动学模型 参考资料 注 xff1a
  • 一些webpack配置优化手段

    loader 设置include或者exclude 一般第三方包都是打包好的 xff0c 无需再打包 xff0c 特别是babel loader eslint loader span class hljs attr test span sp
  • 基于iframe的移动端嵌套

    需求描述 上上周接到了新的项目 xff0c 移动端需要做一个底部有五个导航 xff0c 点击不同的导航页面主体显示不同的页面 xff0c 其中两个页面是自己做 xff0c 而另外三个页面是引用另外三个网址 xff0c 其中两个网址为内部项目
  • Vue实战篇(PC端商城项目)

    这是一个基于vue全家桶 43 node js 43 express 43 mysql实现的商城网站 项目github地址 xff1a vueMall 查看demo 地址 如果觉得对您有帮助 xff0c 您可以在左下角给我个喜欢支持一下 x
  • https安全证书过期失效的原因以及解决方法

    一 网站https安全证书过期原因分析 xff1a 1 当前电脑系统时间错误 xff0c 所有的http安全证书都有颁发日期和截止日期 xff0c 电脑系统时间在证书有效时间区间之外有可能导致浏览器提示网站https安全证书已过期或还未生效
  • 安装OPENWRT后打不开管理页面的解决方法

    路由器刷入了OPENWRT 结果发现刷入的固件没有带Luci 以下是本人手动安装Luci的方法 开始安装Luci所需的依赖包 opkg install http 192 168 1 2 uhttpd 27 brcm47xx ipk opkg
  • Postgresql查看表结构和字段注释

    Postgresql查看表结构和字段注释 一 xff1a 查看表结构 xff08 字段 xff09 信息 xff1a Select table name column name data type character maximum len
  • 技术淘宝

    精度前端学习 前端开发100天 xff08 置顶 xff09 http alloyteam github io CodeGuide https github com AlloyTeam CodeGuide cmd控制台的小技巧 xff1a
  • Migration: Find Duplicate Objects in Application Desinger Projects

    The sql will identify duplicate objects in different application designer projects to eliminate duplicate work by develo
  • SQL server loginname alias mapping problem.

    exec sp changedbowner 39 Aambriore mra 39 EXEC sp change users login 39 Auto Fix 39 39 lts 39 null Exec sp change users
  • [ASP.NET MVC 小牛之路]08 - Area 使用

    ASP NET MVC允许使用 Area xff08 区域 xff09 来组织Web应用程序 xff0c 每个Area代表应用程序的不同功能模块 这对于大的工程非常有用 xff0c Area 使每个功能模块都有各自的文件夹 xff0c 文件
  • OpennVINS运行、评估笔记

    1 安装运行 1 1 下载 amp 编译 span class token builtin class name cd span catkin ws src span class token function git span clone
  • 关于apm飞控烧bootloader

    最近一直由于学校大创申请的的四轴 xff0c 一直在做这玩意 xff0c 哎 xff0c 无奈这货实在不像想象的那样简单 xff0c 自己写了N久飞控 xff0c 也没把飞机飞起来 xff0c 只能先用开源的apm飞控练练手呗 xff0c
  • c语言实现subs指令,周立功LPC系统移植学习之c启动代码修改一

    一 系统移植用c启动代码 Copyright c Guangzou ZLG MCU Development Co LTD graduate school http www zlgmcu com File Info