程序代码

合集下载

程序代码及其含义

程序代码及其含义

程序代码及其含义数控机床程编中,经常使用的程序代码有哪些?其含义是什么?在数控机床程序编制中,经常使用的程序指令代码有“G”、“M”。

经常使用的功能代码有“S”、“F”和“T”等。

现将这些常用的指令及功能代码含义介绍如下:(1)G指令G指令是准备功能指令,有字母G和后面紧跟的2位数字组成。

从G00到G99共有100个指令。

该指令的作用主要是指定数控机床的运动方式,并为数控系统插补运算作好准备,因此在程序段中G指令一般位于坐标指令的前面。

常用的G指令有G01(直线插补),G02、G03(圆弧插补),G00(快速点定位),G17、G18、G19(坐标平面选择),G40、G41、G42(刀具半径补偿),G92(预置寄存)及G90、G91(绝对尺寸及增量尺寸程编指令)。

有关G指令的详细规定与含义见表1---3所示。

在代码中有两种代码必须有一些了解,一个是准备工作码(H代码),一个是辅助功能代码(M代码)。

我们国家对G代码和M代码做了规定,即JG3028—83,它与国际标准化组织的ISO—1056—1975E等效。

在G代码与M代码中有不指定和永不指定两类尚未定义的代码。

不指定是暂时尚未指定,以后很可能指定定义,永不指定的代码就把指定的权利安给了机床制造厂家。

不论G代码还是M代码,均用2位数来表示:G00~G99,M00~M99。

共有200个代码。

最近看到有些机床厂家的G代码出现了3位数,这也是一种必然的结果,机床功能愈来愈多,当然代码必然也会增加。

但尚未见到国际标准化组织的新规定。

我们希望更多的分析一下机床厂随机提供的编程资料是非常必要的。

即使对G代码、M代码非常熟悉的人也要研究这些随机资料,看一看是否有一些新的规定,避免编程中存在语法错误。

这些软性的故障,常常在机床使用的初期出现。

表1---3 JB3208—83准备功能G代码代码(1)功能保持到被取消或被同样字母表示的程序指令所代替(2)功能仅在所出现的程序段内有作用(3)功能(4)G00a点定位G01a直线插补G02a顺时针方向圆弧插补G03a逆时针方向圆弧插补G04*暂停G05##不指定G06a抛物线插补G07##不指定G08*加速G08*减速G10~G16**不指定G17c XY平面选择G18c ZX平面选择G19c YZ平面选择G20~G32##不指定代码(1)功能保持到被取消或被同样字母表示的程序指令所代替(2)功能仅在所出现的程序段内有作用(3)功能(4)G33a螺纹切削,等螺距G34a螺纹切削,增螺距G35a螺纹切削,减螺距G36~G39##永不指定G40d刀具补偿/刀具偏置注销G41d刀具补偿一左G42d刀具补偿一右G43#(d)#刀具偏置一正G44#(d)#刀具偏置一负G45#(d)#刀具偏置+/+G46#(d)#刀具偏置+/-G47#(d)#刀具偏置-/-G48#(d)#刀具偏置-/+G49#(d)#刀具偏置0/+G50(d)#刀具偏置0/-G51(d)#刀具偏置+/0G52(d)#刀具偏置-/0G53f直线偏移,注销G54f直线偏移XG55f直线偏移YG56f直线偏移ZG57f直线偏移XYG58f直线偏移XZG59f直线偏移YZG60h准确定位1(精)G61h准确定位2(中)G62h快速定位(粗)G63#攻丝G64~G67##不指定G68#(d)#刀具偏置,内角G69#(d)#刀具偏置,外角G70~G79##不指定G80e固定循环注销G81~G89e固定循环G90j绝对尺寸G91j增量尺寸G92#预置寄存G93k时间倒数,进给率G94k每分钟进给G95k主轴每转进给G96I恒线速度G97I每分钟转数(主轴)G98~G99##不指定注:1.#号:如选作特殊用途,必须在程序格式说明中说明。

程序代码及其含义

程序代码及其含义

程序代码及其含义数控机床程编中,经常使用的程序代码有哪些?其含义是什么?在数控机床程序编制中,经常使用的程序指令代码有“G”、“M”。

经常使用的功能代码有“S”、“F”和“T”等。

现将这些常用的指令及功能代码含义介绍如下:(1)G指令G指令是准备功能指令,有字母G和后面紧跟的2位数字组成。

从G00到G99共有100个指令。

该指令的作用主要是指定数控机床的运动方式,并为数控系统插补运算作好准备,因此在程序段中G指令一般位于坐标指令的前面。

常用的G指令有G01(直线插补),G02、G03(圆弧插补),G00(快速点定位),G17、G18、G19(坐标平面选择),G40、G41、G42(刀具半径补偿),G92(预置寄存)及G90、G91(绝对尺寸及增量尺寸程编指令)。

有关G指令的详细规定与含义见表1---3所示。

在代码中有两种代码必须有一些了解,一个是准备工作码(H代码),一个是辅助功能代码(M代码)。

我们国家对G代码和M代码做了规定,即JG3028—83,它与国际标准化组织的ISO—1056—1975E等效。

在G代码与M代码中有不指定和永不指定两类尚未定义的代码。

不指定是暂时尚未指定,以后很可能指定定义,永不指定的代码就把指定的权利安给了机床制造厂家。

不论G代码还是M代码,均用2位数来表示:G00~G99,M00~M99。

共有200个代码。

最近看到有些机床厂家的G代码出现了3位数,这也是一种必然的结果,机床功能愈来愈多,当然代码必然也会增加。

但尚未见到国际标准化组织的新规定。

我们希望更多的分析一下机床厂随机提供的编程资料是非常必要的。

即使对G代码、M代码非常熟悉的人也要研究这些随机资料,看一看是否有一些新的规定,避免编程中存在语法错误。

这些软性的故障,常常在机床使用的初期出现。

表1---3 JB3208—83准备功能G代码注:1.#号:如选作特殊用途,必须在程序格式说明中说明。

2.如在直线切削控制中没有刀具补偿,则G43到G52可指定作其他用途。

数控编程必背50个代码

数控编程必背50个代码

数控编程必背50个代码在数控编程领域,熟练掌握一些常用的代码是非常重要的。

这些代码可以帮助工程师更高效地编写程序,实现机床的自动化加工。

下面列出了数控编程中必须掌握的50个代码片段。

1. G00 快速移动用于机床的快速移动,无需切削,只需迅速移动到指定坐标点。

2. G01 直线插补用于直线切削,控制机床在两个坐标点之间做直线运动。

3. G02 圆弧顺时针用于控制机床做以一定半径圆弧顺时针运动。

4. G03 圆弧逆时针用于控制机床做以一定半径圆弧逆时针运动。

5. G04 暂停暂停一段时间后再继续执行后续代码。

6. G17 选择XY平面设置XY平面为加工坐标系。

7. G18 选择XZ平面设置XZ平面为加工坐标系。

8. G19 选择YZ平面设置YZ平面为加工坐标系。

9. G20 设置英寸单位设置程序使用英寸单位进行加工。

10. G21 设置毫米单位设置程序使用毫米单位进行加工。

11. G28 回零将各轴回到零点位置。

12. G40 刀具卸载停止刀具补偿。

13. G41 刀具左补偿使用左刀具半径进行切削。

14. G42 刀具右补偿使用右刀具半径进行切削。

15. G50 缩放程序按比例放大程序。

16. G80 消除模态清除之前设置的模态参数。

17. G90 绝对编程以绝对坐标进行编程。

18. G91 增量编程以增量坐标进行编程。

19. G92 设定坐标修改坐标系的偏移。

20. M00 程序暂停程序暂停,等待操作员确认后继续执行。

21. M06 刀具换位按照程序中定义的刀具号换刀。

22. M08 冷却开启开启冷却系统。

23. M09 冷却关闭关闭冷却系统。

24. M30 程序结束程序正常结束。

25. M98 调用子程序调用程序中定义的子程序。

26. M99 子程序结束子程序执行完毕返回。

27. T01 选择刀具1选择对应编号的刀具。

28. T02 选择刀具2选择对应编号的刀具。

29. S500 设置主轴转速设置主轴的转速为500转/分钟。

代码名词解释

代码名词解释

代码名词解释1. 什么是代码?代码是计算机程序的一种形式,它是一系列指令的集合,用于告诉计算机如何执行特定任务。

代码可以由程序员使用特定的编程语言编写,并通过编译器或解释器转换为计算机可以理解和执行的机器语言。

2. 代码的作用和重要性代码在现代社会中扮演着至关重要的角色。

以下是代码的几个主要作用:控制计算机行为代码告诉计算机执行特定任务,包括处理数据、运行应用程序、控制设备等。

通过编写不同的代码,我们可以实现各种不同的功能和行为。

解决问题通过编写代码,我们可以将复杂问题分解为更小、更易管理和理解的部分。

通过合理组织和设计代码,我们可以以一种系统化和可重复的方式解决问题。

自动化任务通过编写自动化脚本或程序,我们可以自动执行重复性、繁琐或耗时的任务。

这样可以提高效率并减少人工错误。

构建应用程序应用程序是指向用户提供某种功能或服务的软件。

通过编写代码,开发人员可以构建各种类型的应用程序,包括桌面应用程序、移动应用程序、Web应用程序等。

促进创新和科技发展代码是科技发展的驱动力之一。

通过编写代码,人们可以实现新的功能和创新的想法。

代码也为人们提供了学习和探索计算机科学的平台。

代码的重要性在现代社会中不可忽视。

几乎所有行业都依赖于计算机系统和软件应用程序来提供服务、管理数据和进行决策。

3. 常见的编程语言编程语言是用于编写代码的规则和结构。

以下是几种常见的编程语言:CC是一种通用高级编程语言,由Dennis Ritchie于1972年开发。

它具有高效性、可移植性和灵活性,并被广泛应用于系统软件、嵌入式系统等领域。

JavaJava是一种面向对象的编程语言,由Sun Microsystems(现为Oracle)于1995年推出。

它具有跨平台性、可靠性和安全性,并广泛应用于企业级应用程序开发、Android应用程序开发等领域。

PythonPython是一种简单易学且功能强大的高级编程语言,由Guido van Rossum于1989年开发。

c#考试(程序代码大全)

c#考试(程序代码大全)

目录2)一元二次方程求解............................................3)1-100之间所有整数的和,能被某数整除的所有整数的和,积......4)闰年的判断..................................................5)水仙花数....................................................6)简单计算器..................................................7)一维数组的声明、初始化、赋值、遍历(求数组所有元素的和,积,最大值,最小值等统计数值)...................................................8)二维数组的声明、初始化、赋值、遍历(求数组所有元素的和,积,最大值,最小值等统计数值)...................................................9)圆台的体积..................................................10)三角形的三边,求三角形的面积...............................11)乘法口诀表.................................................12)字符串的统计(大写,小写字母,数字的个数).................13)数值类型的转换:数值-字符串,字符串-数字,数值类型之间的显示转换,隐式转换.............................................................14)遍历窗体上的组件...........................................15)随机数发生器的用法.........................................16)用判断成绩等级,改变窗体的背景颜色.........................17)用和求1-100之间所有整数的和,积等.........................18)类的创建和使用(类的声明,字段,属性和方法的添加,生成类的实例和使用其成员)...........................................................19)的用法.....................................................1)1( , e)s = (1());(s >= 90 s <= 100)("优秀");(s >= 80 s < 90)("良好");(s >= 70 s < 80)("中");(s >= 60 s < 70)("与格");("不与格");2)一元二次方程求解1( , e)a = (),b = (),c = ();(a 0)("方程的根是: " + ( / b)());= (b, 2) - 4 * a * c;( >= 0)X1 = ( + (, 0.5)) / 2 * a;X2 = ( - (, 0.5)) / 2 * a;= "X1="1()+"\r\2="2();("没有实数根!");3)1-100之间所有整数的和,能被某数整除的所有整数的和,积 1( , e)= 0;( i = 0; i <= 100; i = i + 1)= + i;1 = ();求1~100之内所有偶数的和= 0;( i = 0; i <= 100; i = i + 2)= + i;1 = ();1( , e)= 0;a;( i = 0; i <= 100; )a = i % 7;(a 0)= + i;1 = ();4)闰年的判断1( , e)a = 32(1);((a %40 a %1000) a %400 0)("是闰年");("不是闰年");或办法a = (1 );s = (a % 4 0 ? "该年份是闰年 ": "该年份是平年 " );(s )5)水仙花数1( , e)s = "水仙花数:"+"\r\n";( i = 100; i < 1000; )= i % 10;= i / 10 % 10;= i / 100;(i * * + * * + * * )s () + "\r\n";(s,"你好漂亮");6)简单计算器1( , e)1 = 32(1);2 = 32(3);(2 ("+"))((12)());(2 ("-"))((12)());(2 ("*"))((1*2)());(2 ("/"))((12)());(2 ("%"))((12)());("运算符出错");或办法a = (1);b = (3);s = 2;c = (s "+" ? a + b : (s "-" ? a - b : (s "*" ? a * b : (s "/" ? a / b :a % b))));7)一维数组的声明、初始化、赋值、遍历(求数组所有元素的和,积,最大值,最小值等统计数值)1( , e)1 "原数组为:" + "\r\n";[] a = [5];( i = 0; i < ; )a[i] = (0, 100);1 a[i]() + " ";= a[0], = a[0]; s = 0; = 0;( i = 0; i < ; )(a[i] > )= a[i];(a[i] < )= a[i];s a[i]; = s / ;1 ("\r\n最大值为{0}\r\n最小值为{1}\r\n均值为{2}\r\n和为{3}", , , , s);8)二维数组的声明、初始化、赋值、遍历(求数组所有元素的和,积,最大值,最小值等统计数值)2( , e)2 "原数组为:" + "\r\n";[,] b = [3, 4];( i = 0; i < 3; )( j = 0; j < 4; )b[i, j] = (-100,100);2 b[i, j]() + " , ";= b[0, 0], = b[0, 0]; s = 0; = 0;( i = 0; i < 3; )( j = 0; j < 4; )b[i, j] = (-100, 100);(b[i, j] > ) = b[i, j];(b[i, j] < ) = b[i, j];s b[i, j];= s / (3 * 4);2 ("\r\n最大值为{0}\r\n最小值为a{1}\r\n平均值为{2}\r\n和为{3}", , , , s);9)圆台的体积圆台体积计算公式V=π*h*(R^2 + ^2)/3即:v = *h*(R*R + R* r *r)/31( , e)R = (1),r = (2),h = (3);π = 3.14;X1 = π * h * ((R, 2) + (r, 2) + R * r) / 3;v = "圆台体积是:" + X1();(v);10)三角形的三边,求三角形的面积1( , e)A = (1);B = (2);C = (3);d; f; s;(A + B > C & A + C > B & B + C > A & A - B < C & A - C < B &B -C < A)d = (A * A + C * C - B * B) / (2 * A * C);f = ((1 - d * d), 0.5);s = 0.5 * A * C * f;("三角形面积是:"());("输入数据有误");11)乘法口诀表1( , e)= ""; = 0;199 = "";( i = 1; i < 10; )( j = 1; j <= i; )= i * j;( >= 10)199 + "\n";12)字符串的统计(大写,小写字母,数字的个数)1( , e)a = 1;( t a)(t >= '0' t <='9')(t >= 'a' t <= 'z')(t >= 'A' t <= 'Z')3 = ();4 = ();5 = ();13)数值类型的转换:数值-字符串,字符串-数字,数值类型之间的显示转换,隐式转换类型转换、隐式转换、显示转换、类的用法、方法主要以隐式转换为例(其他的类似求解)补充:1)何时使用隐式和显示转换?答:隐式转换一般发生在数据进行混合运算的情况下,是编译系统自动进行的,不需要加以声明;显示转换,又称为强制类型转换,该方式需要用户明确的指定转换的目标类型,该类型一般形式为: (类型说明符) (需要转换的表达式)二、类型转换隐式转换a; b; c; d; f; g; h; y;1( , e)b = 1;c = b;d = c; f = d; g = f;((), "转换1");2( , e)a = 2; c = a; d = c; f = d; g = f;((), "转换2");显示转换a; b; c; d; f; g; h; y;1( , e)a; b;a = 1.1111f;b = ()a;((), "郭浩);2( , e)a; b;a = 2.3m;b = ()a;3( , e)a; b;a = 1;b = ()a;31( , e)a; b;a = 94;b = (a);类的用法1( , e)a = "123";b = 32(a);2( , e)a = "456";3( , e)a = "789";b = (a);4( , e)a = "0";b = (a);方法a (1)(() );14)遍历窗体上的组件遍历组件代码如下= 0;= 0;= 0;= 0;( c )(c )= + 1;(c )= + 1;(c )= + 1;(c )= + 1;= "的数量:" + + "\r\n"+ "的数量:" + + "\r\n"+ "的数量:" + + "\r\n"+ "的数量:" + + "\r\n";(, "遍历组件", , , 1);运行截图15)随机数发生器的用法求浮点型数组最大元素1 = "生成数组:" + "\r\n";[] a = [5];r = ();( i = 0; i < ; )a[i] = (0, 1000);1 a[i]() + " ";= a[0], = a[0];( i = 0; i < ; )(a[i] > )= a[i];(a[i] < )= a[i];2 "最大值" + ();16)用判断成绩等级,改变窗体的背景颜色 1( , e)(s >= 0 s <= 100)(s / 10)0:1:2:3:4:5:("不与格");6:( "与格");10:( "优秀");("请输入正确的分数"); ( "请输入正确的分数");1( , e)s = 1;(s)"红":"黄":"蓝":"黑":"白":"绿":。

入门级程序员必学的10个代码规范

入门级程序员必学的10个代码规范

入门级程序员必学的10个代码规范代码规范是编写高质量、可维护和可扩展代码的重要指南。

遵循代码规范可以提高代码的可读性、降低维护成本,并促进团队合作。

以下是入门级程序员必学的10个代码规范:1.命名规范:-变量、函数和类名要有意义且描述性强,使用驼峰式命名法。

-避免使用单个字符或缩写作为变量名。

-对于常量,使用全大写命名,使用下划线分隔单词。

2.缩进和空格:-使用合适的缩进,一般为四个空格。

-避免使用制表符。

-为操作符和逗号之前添加空格,但不要在括号和参数之间添加空格。

3.注释规范:-在关键代码块上方添加注释,说明该代码的功能和用途。

-避免过度注释或乱写注释,只注释必要的部分。

-使用有意义的注释来解释复杂的算法或特殊需求。

4.函数和方法规范:-函数或方法的长度应保持在可读范围内,不要超过50行。

-函数和方法的功能应该单一,尽量避免实现过多的功能。

-使用合适的命名来描述函数或方法的功能。

5.错误处理:-使用异常处理机制来处理错误情况,避免使用错误码。

-函数和方法应该返回有意义的错误消息,方便用户调试和排查问题。

-在必要的时候,使用日志记录错误信息。

6.可复用性:-提取公共的功能代码到可复用的模块中,避免重复代码。

-使用接口或抽象类来定义通用的行为和方法。

-遵循单一职责原则,使每个类和方法只负责一个功能。

7.异步编程规范:-避免使用回调地狱,使用Promise、async/await等异步编程方法提高可读性。

-错误处理要考虑异步函数的特殊情况和回退机制。

8.文件和目录结构:-为文件和目录选择有意义的名称,符合项目的逻辑结构。

-放置相似功能或相关文件在同一文件夹下,方便查找和管理。

-确保代码和测试文件的分离,避免混淆。

9.版本控制:-使用版本控制系统(如Git)来管理代码的历史记录和变更。

-遵循合适的分支策略和提交规范。

-确保每个提交都有有意义的注释,解释变更的目的和影响。

10.代码审查:-将代码提交给同事或团队进行代码审查,以提供反馈和建议。

几个简单有趣的c语言代码

几个简单有趣的c语言代码

几个简单有趣的c语言代码一、引言程序设计语言是计算机语言的一种,用于定义和编写计算机程序。

C语言是一种高级程序设计语言,由AT&T贝尔实验室的Dennis M. Ritchie于1972年开发。

C语言在软件开发中得到广泛应用,因其灵活性、效率和可移植性而备受开发人员的喜爱。

本篇文章将介绍几个简单有趣的C语言代码,用以展示C语言的魅力和应用。

二、Hello World1. 代码#include <stdio.h>int main() {printf("Hello, World!");return 0;}2. 解析这是C语言中最简单的程序,用于输出”Hello, World!“。

在代码中,printf函数用于打印消息到控制台,return 0表示程序正常执行结束。

编译并运行该程序,控制台将输出”Hello, World!“。

三、猜数字游戏1. 代码#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int secretNumber, guess, attempts = 0;srand(time(0));secretNumber = rand() % 100 + 1;printf("猜数字游戏开始!\n");do {printf("请输入一个猜测的数字:");scanf("%d", &guess);attempts++;if (guess > secretNumber) {printf("太大了!\n");} else if (guess < secretNumber) {printf("太小了!\n");} else {printf("恭喜你猜对了!你用了 %d 次尝试。

c++基础程序代码

c++基础程序代码

c++基础程序代码(一)以下是一个简单的C++程序代码,用于输出“Hello, World!”:c#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;}这个程序使用了C++标准库中的iostream库,通过std::cout输出“Hello, World!”,然后使用std::endl输出一个换行符。

最后,程序返回0表示正常退出。

c++基础程序代码(二)稍微复杂一点的C++程序示例,用于计算两个数的和:c#include <iostream>int main() {int num1, num2, sum;std::cout << "请输入第一个数:";std::cin >> num1;std::cout << "请输入第二个数:";std::cin >> num2;sum = num1 + num2;std::cout << "两个数的和为:" << sum << std::endl; return 0;}该程序首先声明了三个整数变量num1、num2和sum,然后使用std::cout对象输出提示信息,让用户输入第一个数和第二个数。

接着使用std::cin对象读取用户输入的两个数,并将它们相加存储到sum变量中。

最后使用std::cout对象输出计算结果。

c++基础程序代码(三)当然可以,以下是一个更复杂的C++程序示例,用于实现简单的计算器:c#include <iostream>int main() {int num1, num2;char op;std::cout << "请输入第一个数:";std::cin >> num1;std::cout << "请输入操作符:";std::cin >> op;std::cout << "请输入第二个数:";std::cin >> num2;switch (op) {case '+':std::cout << "结果是:" << num1 + num2 << std::endl;break;case '-':std::cout << "结果是:" << num1 - num2 << std::endl;break;case '*':std::cout << "结果是:" << num1 * num2 << std::endl;break;case '/':if (num2 == 0) {std::cout << "除数不能为0,请重新输入!" << std::endl;} else {std::cout << "结果是:" << num1 / num2 << std::endl;}break;default:std::cout << "不支持该操作符,请重新输入!" << std::endl;break;}return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;/*;******************************************************************************************* *****************;* 北京精仪达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息----------------------------------------------------;*;* 文件名称: 2410INIT.S;* 文件功能: S3C2410 启动代码,配置存储器,ISR,堆栈,初始化C向量地址;* 补充说明:;*-------------------------------------------- 最新版本信息-------------------------------------------------;* 修改作者: ARM开发小组;* 修改日期: 2004/00/00;* 版本声明: V0.1;*-------------------------------------------- 历史版本信息-------------------------------------------------;* 文件作者: kwtark(samsung);* 创建日期: 2002/02/25;* 版本声明: ver 0.0; 2002/03/20: purnnamu: Add some functions for testing STOP,POWER_OFF mode; 2002/04/10: SJS:sub interrupt disable 0x3ff -> 0x7ff;*-----------------------------------------------------------------------------------------------------------;******************************************************************************************* ******************;*/GET 2410addr.sGET memcfg.sBIT_SELFREFRESH EQU (1<<22);//Pre-defined constantsUSERMODE EQU 0x10FIQMODE EQU 0x11IRQMODE EQU 0x12SVCMODE EQU 0x13ABORTMODE EQU 0x17UNDEFMODE EQU 0x1bMODEMASK EQU 0x1fNOINT EQU 0xc0;//The location of stacksUserStack EQU (_STACK_BASEADDRESS-0x3800) ;//0x33ff4800 ~SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;//0x33ff5800 ~UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;//0x33ff5c00 ~AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;//0x33ff6000 ~IRQStack EQU (_STACK_BASEADDRESS-0x1000) ;//0x33ff7000 ~FIQStack EQU (_STACK_BASEADDRESS-0x0) ;//0x33ff8000 ~;//Check if tasm.exe(armasm -16 ...@ADS 1.0) is used.GBLL THUMBCODE[ {CONFIG} = 16THUMBCODE SETL {TRUE}CODE32|THUMBCODE SETL {FALSE}]MACROMOV_PC_LR[ THUMBCODEbx lr|mov pc,lr]MENDMACROMOVEQ_PC_LR[ THUMBCODEbxeq lr|moveq pc,lr]MENDMACRO$HandlerLabel HANDLER $HandleLabel$HandlerLabelsub sp,sp,#4 ;//decrement sp(to store jump address)stmfd sp!,{r0} ;//PUSH the work register to stack(lr does't push because it return to original address)ldr r0,=$HandleLabel;//load the address of HandleXXX to r0ldr r0,[r0] ;//load the contents(service routine start address) of HandleXXXstr r0,[sp,#4] ;//store the contents(ISR) of HandleXXX to stackldmfd sp!,{r0,pc} ;//POP the work register and pc(jump to ISR)MENDIMPORT |Image$$RO$$Limit| ;// End of ROM code (=start of ROM data) IMPORT |Image$$RW$$Base| ;// Base of RAM to initialiseIMPORT |Image$$ZI$$Base| ;// Base and limit of areaIMPORT |Image$$ZI$$Limit| ;// to zero initialiseIMPORT Main ;// The main entry of mon programAREA Init,CODE,READONL YENTRY;//1)The code, which converts to Big-endian, should be in little endian code.;//2)The following little endian code will be compiled in Big-Endian mode.;// The code byte order should be changed as the memory bus width.;//3)The pseudo instruction,DCD can't be used here because the linker generates error. ASSERT :DEF:ENDIAN_CHANGE[ ENDIAN_CHANGEASSERT :DEF:ENTRY_BUS_WIDTH[ ENTRY_BUS_WIDTH=32b ChangeBigEndian ;DCD 0xea000007][ ENTRY_BUS_WIDTH=16andeq r14,r7,r0,lsl #20 ;DCD 0x0007ea00][ ENTRY_BUS_WIDTH=8streq r0,[r0,-r10,ror #1] ;DCD 0x070000ea]|b ResetHandler]b HandlerUndef ;//handler for Undefined modeb HandlerSWI ;//handler for SWI interruptb HandlerPabort ;//handler for PAbortb HandlerDabort;//handler for DAbortb . ;//reservedb HandlerIRQ ;//handler for IRQ interruptb HandlerFIQ ;//handler for FIQ interrupt;//@0x20b EnterPWDNChangeBigEndian;//@0x24[ ENTRY_BUS_WIDTH=32DCD 0xee110f10 ;0xee110f10 => mrc p15,0,r0,c1,c0,0DCD 0xe3800080 ;0xe3800080 => orr r0,r0,#0x80; //Big-endianDCD 0xee010f10 ;0xee010f10 => mcr p15,0,r0,c1,c0,0][ ENTRY_BUS_WIDTH=16DCD 0x0f10ee11DCD 0x0080e380DCD 0x0f10ee01][ ENTRY_BUS_WIDTH=8DCD 0x100f11eeDCD 0x800080e3DCD 0x100f01ee]DCD 0xffffffff ;//swinv 0xffffff is similar with NOP and run well in both endian mode.DCD 0xffffffffDCD 0xffffffffDCD 0xffffffffDCD 0xffffffffb ResetHandler;//Function for entering power down mode;// 1. SDRAM should be in self-refresh mode.;// 2. All interrupt should be maksked for SDRAM/DRAM self-refresh.;// 3. LCD controller should be disabled for SDRAM/DRAM self-refresh.;// 4. The I-cache may have to be turned on.;// 5. The location of the following code may have not to be changed.;//void EnterPWDN(int CLKCON);EnterPWDNmov r2,r0 ;//r2=rCLKCONtst r0,#0x8 ;//POWER_OFF mode?bne ENTER_POWER_OFFENTER_STOPldr r0,=REFRESHldr r3,[r0] ;//r3=rREFRESHmov r1, r3orr r1, r1, #BIT_SELFREFRESHstr r1, [r0] ;//Enable SDRAM self-refreshmov r1,#16 ;//wait until self-refresh is issued. may not be needed.0 subs r1,r1,#1bne %B0ldr r0,=CLKCON ;//enter STOP mode.str r2,[r0]mov r1,#320 subs r1,r1,#1 ;//1) wait until the STOP mode is in effect.bne %B0 ;//2) Or wait here until the CPU&Peripherals will be turned-off;// Entering POWER_OFF mode, only the reset by wake-up is available.ldr r0,=REFRESH ;//exit from SDRAM self refresh mode.str r3,[r0]MOV_PC_LRENTER_POWER_OFF;//NOTE.;//1) rGSTATUS3 should have the return address after wake-up from POWER_OFF mode.ldr r0,=REFRESHldr r1,[r0] ;//r1=rREFRESHorr r1, r1, #BIT_SELFREFRESHstr r1, [r0] ;//Enable SDRAM self-refreshmov r1,#16 ;//Wait until self-refresh is issued,which may not be needed.0 subs r1,r1,#1bne %B0ldr r1,=MISCCRldr r0,[r1]orr r0,r0,#(7<<17) ;//Make sure that SCLK0:SCLK->0, SCLK1:SCLK->0, SCKE=L during boot-up str r0,[r1]ldr r0,=CLKCONstr r2,[r0]b . ;//CPU will die here.WAKEUP_POWER_OFF;//Release SCLKn after wake-up from the POWER_OFF mode.ldr r1,=MISCCRldr r0,[r1]bic r0,r0,#(7<<17) ;//SCLK0:0->SCLK, SCLK1:0->SCLK, SCKE:L->Hstr r0,[r1];//Set memory control registersldr r0,=SMRDATAldr r1,=BWSCON ;//BWSCON Addressadd r2, r0, #52 ;//End address of SMRDATAldr r3, [r0], #4str r3, [r1], #4cmp r2, r0bne %B0mov r1,#2560 subs r1,r1,#1 ;//1) wait until the SelfRefresh is released.bne %B0ldr r1,=GSTATUS3 ;//GSTA TUS3 has the start address just after POWER_OFF wake-up ldr r0,[r1]mov pc,r0LTORGHandlerFIQ HANDLER HandleFIQHandlerIRQ HANDLER HandleIRQHandlerUndef HANDLER HandleUndefHandlerSWI HANDLER HandleSWIHandlerDabort HANDLER HandleDabortHandlerPabort HANDLER HandlePabortIsrIRQsub sp,sp,#4 ;//reserved for PCstmfd sp!,{r8-r9}ldr r9,=INTOFFSETldr r9,[r9]ldr r8,=HandleEINT0add r8,r8,r9,lsl #2ldr r8,[r8]str r8,[sp,#8]ldmfd sp!,{r8-r9,pc};//=============================================================================== =================;// ENTRY;//=============================================================================== ==================ResetHandlerldr r0,=WTCON ;//watch dog disableldr r1,=0x0str r1,[r0]ldr r0,=INTMSKldr r1,=0xffffffff ;//all interrupt disablestr r1,[r0]ldr r0,=INTSUBMSKldr r1,=0x7ff ;//all sub interrupt disable, 2002/04/10str r1,[r0][ {FALSE};// rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data & 0xf)<<4);;// Led_Displayldr r0,=GPFCONldr r1,=0x5500str r1,[r0]ldr r0,=GPFDATldr r1,=0x10str r1,[r0]];//To reduce PLL lock time, adjust the LOCKTIME register.ldr r0,=LOCKTIMEldr r1,=0xffffffstr r1,[r0][ PLL_ON_START;//Configure MPLLldr r0,=MPLLCONldr r1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV) ;//Fin=12MHz,Fout=50MHzstr r1,[r0]];//Check if the boot is caused by the wake-up from POWER_OFF mode.ldr r1,=GSTATUS2ldr r0,[r1]tst r0,#0x2;//In case of the wake-up from POWER_OFF mode, go to POWER_OFF_WAKEUP handler.bne WAKEUP_POWER_OFFEXPORT StartPointAfterPowerOffWakeUpStartPointAfterPowerOffWakeUp;//Set memory control registersldr r0,=SMRDATAldr r1,=BWSCON ;//BWSCON Addressadd r2, r0, #52 ;//End address of SMRDATAldr r3, [r0], #4str r3, [r1], #4cmp r2, r0bne %B0;//Initialize stacksbl InitStacks;// Setup IRQ handlerldr r0,=HandleIRQ ;//This routine is neededldr r1,=IsrIRQ ;//if there isn't 'subs pc,lr,#4' at 0x18, 0x1cstr r1,[r0];//Copy and paste RW data/zero initialized data ldr r0, =|Image$$RO$$Limit| ; //Get pointer to ROM dataldr r1, =|Image$$RW$$Base| ; //and RAM copyldr r3, =|Image$$ZI$$Base|;//Zero init base => top of initialised data cmp r0, r1 ;// Check that they are differentbeq %F21cmp r1, r3 ;// Copy init dataldrccr2, [r0], #4 ;//--> LDRCC r2, [r0] + ADD r0, r0, #4strcc r2, [r1], #4 ;//--> STRCC r2, [r1] + ADD r1, r1, #4bcc %B12ldr r1, =|Image$$ZI$$Limit| ;// Top of zero init segmentmov r2, #03cmp r3, r1 ; Zero initstrcc r2, [r3], #4bcc %B3[ :LNOT:THUMBCODEbl Main ;//Don't use main() because ......b .][ THUMBCODE ;//for start-up code for Thumb modeorr lr,pc,#1bx lrCODE16bl Main ;//Don't use main() because ......b .CODE32];//function initializing stacksInitStacks;//Don't use DRAM,such as stmfd,ldmfd......;//SVCstack is initialized before;//Under toolkit ver 2.5, 'msr cpsr,r1' can be used instead of 'msr cpsr_cxsf,r1'mrs r0,cpsrbic r0,r0,#MODEMASKorr r1,r0,#UNDEFMODE|NOINTmsr cpsr_cxsf,r1 ;//UndefModeldr sp,=UndefStackorr r1,r0,#ABORTMODE|NOINTmsr cpsr_cxsf,r1 ;//AbortModeldr sp,=AbortStackorr r1,r0,#IRQMODE|NOINTmsr cpsr_cxsf,r1 ;//IRQModeldr sp,=IRQStackorr r1,r0,#FIQMODE|NOINTmsr cpsr_cxsf,r1 ;//FIQModeldr sp,=FIQStackbic r0,r0,#MODEMASK|NOINTorr r1,r0,#SVCMODEmsr cpsr_cxsf,r1 ;//SVCModeldr sp,=SVCStack;//USER mode has not be initialized.mov pc,lr;//The LR register won't be valid if the current mode is not SVC mode.LTORGSMRDA TA DATA;// Memory configuration should be optimized for best performance;// The following parameter is not optimized.;// Memory access cycle parameter strategy;// 1) The memory settings is safe parameters even at HCLK=75Mhz.;// 2) SDRAM refresh period is for HCLK=75Mhz.DCD(0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<2 0)+(B6_BWSCON<<24)+(B7_BWSCON<<28))DCD((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC));GCS0DCD((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC));GCS1DCD((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC));GCS2DCD((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC));GCS3DCD((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));GCS4DCD((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC));GCS5DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) ;GCS6DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) ;GCS7DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)DCD 0x32 ;SCLK power saving mode, BANKSIZE 128M/128MDCD 0x30 ;MRSR6 CL=3clkDCD 0x30 ;MRSR7; // DCD 0x20 ;MRSR6 CL=2clk; // DCD 0x20 ;MRSR7ALIGNAREA RamData, DATA, READWRITE^ _ISR_STARTADDRESSHandleReset # 4HandleUndef # 4HandleSWI # 4HandlePabort # 4HandleDabort # 4HandleReserved # 4HandleIRQ # 4HandleFIQ # 4;//Don't use the label 'IntVectorTable',;//The value of IntVectorTable is different with the address you think it may be.;//IntVectorTableHandleEINT0 # 4HandleEINT1 # 4HandleEINT2 # 4HandleEINT3 # 4HandleEINT4_7 # 4HandleEINT8_23 # 4HandleRSV6 # 4HandleBA TFLT # 4HandleTICK # 4HandleWDT # 4HandleTIMER0 # 4HandleTIMER1 # 4HandleTIMER2 # 4HandleTIMER3 # 4HandleTIMER4 # 4HandleUART2 # 4HandleLCD # 4HandleDMA0 # 4HandleDMA1 # 4HandleDMA2 # 4 HandleDMA3 # 4 HandleMMC # 4 HandleSPI0 # 4 HandleUART1 # 4 HandleRSV24 # 4 HandleUSBD # 4 HandleUSBH # 4 HandleIIC # 4 HandleUART0 # 4 HandleSPI1 # 4 HandleRTC # 4 HandleADC # 4END;/*;******************************************************************************************* *****************;* 北京精仪达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息----------------------------------------------------;*;* 文件名称: 2410slib.s;* 文件功能: 该文件为2410的CPSR、MMU等的配置(Assembly);* 补充说明:;*-------------------------------------------- 最新版本信息-------------------------------------------------;* 修改作者: ARM开发小组;* 修改日期: 2005/08/03;* 版本声明: V1.0.1;*-------------------------------------------- 历史版本信息-------------------------------------------------;* 文件作者: Shin, On Pil (SOP)(samsung);* 创建日期: 2002/05/20;* 版本声明: v0.0;*-----------------------------------------------------------------------------------------------------------;*-----------------------------------------------------------------------------------------------------------;******************************************************************************************* *****************;*/;//Interrupt, FIQ/IRQ disableNOINT EQU 0xc0 ;//1100 0000;//Check if tasm.exe(armasm -16 ...@ADS 1.0) is used.GBLL THUMBCODE[ {CONFIG} = 16THUMBCODE SETL {TRUE}CODE32|THUMBCODE SETL {FALSE}]MACROMOV_PC_LR[ THUMBCODEbx lr|mov pc,lr]MENDAREA |C$$code|, CODE, READONL Y;/*;******************************************************************************************* ******************;- 函数名称: int SET_IF(void);- 函数说明: 设定I、F位,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 改变的CPSR;******************************************************************************************* ******************;*/EXPORT SET_IFSET_IFmrs r0,cpsrmov r1,r0orr r1,r1,#NOINTmsr cpsr_cxsf,r1MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void WR_IF(int cpsrValue);- 函数说明: 设定CPSR的值,该函数仅在特权模式下起作用;- 输入参数: cpsrValue;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT WR_IFWR_IFmsr cpsr_cxsf,r0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void CLR_IF(void);- 函数说明: 清除CPSR的值,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT CLR_IFCLR_IFmrs r0,cpsrbic r0,r0,#NOINTmsr cpsr_cxsf,r0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: XXX;- 函数说明: MMU 相关功能的使能、禁止函数;******************************************************************************************* ******************;*/R1_I EQU (1<<12)R1_C EQU (1<<2)R1_A EQU (1<<1)R1_M EQU (1)R1_iA EQU (1<<31)R1_nF EQU (1<<30);/*;******************************************************************************************* ******************;- 函数名称: void MMU_EnableICache(void);- 函数说明: 使能指令cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_EnableICacheMMU_EnableICachemrc p15,0,r0,c1,c0,0orr r0,r0,#R1_Imcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_DisableICache(void);- 函数说明: 禁止指令cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_DisableICacheMMU_DisableICachemrc p15,0,r0,c1,c0,0bic r0,r0,#R1_Imcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_EnableDCache(void);- 函数说明: 使能数据cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_EnableDCacheMMU_EnableDCachemrc p15,0,r0,c1,c0,0orr r0,r0,#R1_Cmcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_DisableDCache(void);- 函数说明: 禁止数据cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_DisableDCacheMMU_DisableDCachemrc p15,0,r0,c1,c0,0bic r0,r0,#R1_Cmcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_EnableAlignFault(void);- 函数说明: 使能对齐故障检测,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_EnableAlignFaultMMU_EnableAlignFaultmrc p15,0,r0,c1,c0,0orr r0,r0,#R1_Amcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_DisableAlignFault(void);- 函数说明: 禁止对齐故障检测,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_DisableAlignFaultMMU_DisableAlignFaultmrc p15,0,r0,c1,c0,0bic r0,r0,#R1_Amcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_EnableMMU(void);- 函数说明: 使能MMU,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_EnableMMUMMU_EnableMMUmrc p15,0,r0,c1,c0,0orr r0,r0,#R1_Mmcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_DisableMMU(void);- 函数说明: 关闭MMU,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_DisableMMUMMU_DisableMMUmrc p15,0,r0,c1,c0,0bic r0,r0,#R1_Mmcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_SetFastBusMode(void);- 函数说明: 设定快总线模式,FCLK:HCLK= 1:1,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_SetFastBusModeMMU_SetFastBusModemrc p15,0,r0,c1,c0,0bic r0,r0,#R1_iA:OR:R1_nFmcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_SetAsyncBusMode(void);- 函数说明: 设定异步总线模式,FCLK:HCLK= 1:2,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_SetAsyncBusModeMMU_SetAsyncBusModemrc p15,0,r0,c1,c0,0orr r0,r0,#R1_nF:OR:R1_iAmcr p15,0,r0,c1,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_SetTTBase(int base);- 函数说明: 设定TTB的基址,r0=TTBase,FCLK:HCLK= 1:2,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_SetTTBaseMMU_SetTTBasemcr p15,0,r0,c2,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_SetDomain(int domain);- 函数说明: 设定域,r0=domain,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_SetDomainMMU_SetDomainmcr p15,0,r0,c3,c0,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: XXX;- 函数说明: ICache/DCache 相关功能的函数;******************************************************************************************* ******************;*/;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateIDCache(void);- 函数说明: 无效指令、数据cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateIDCacheMMU_InvalidateIDCachemcr p15,0,r0,c7,c7,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateICache(void);- 函数说明: 无效指令cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateICacheMMU_InvalidateICachemcr p15,0,r0,c7,c5,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateICacheMV A(U32 mva);- 函数说明: 无效指令cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateICacheMV AMMU_InvalidateICacheMV Amcr p15,0,r0,c7,c5,1MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_PrefetchICacheMV A(U32 mva);- 函数说明: 有效预取指指令cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;*************************************************************************************************************;*/EXPORT MMU_PrefetchICacheMV AMMU_PrefetchICacheMV Amcr p15,0,r0,c7,c13,1MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateDCache(void);- 函数说明: 无效数据cache,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateDCacheMMU_InvalidateDCachemcr p15,0,r0,c7,c6,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateDCacheMV A(U32 mva);- 函数说明: 无效的数据cache内的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateDCacheMV AMMU_InvalidateDCacheMV Amcr p15,0,r0,c7,c6,1MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_CleanDCacheMV A(U32 mva);- 函数说明: 清除数据cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_CleanDCacheMV AMMU_CleanDCacheMV Amcr p15,0,r0,c7,c10,1MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_CleanInvalidateDCacheMV A(U32 mva);- 函数说明: 清除无效的数据cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_CleanInvalidateDCacheMV AMMU_CleanInvalidateDCacheMV Amcr p15,0,r0,c7,c14,1MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_CleanDCacheIndex(U32 index);- 函数说明: 清除数据cache内的列表,r0=index,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_CleanDCacheIndexMMU_CleanDCacheIndexmcr p15,0,r0,c7,c10,2MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_CleanInvalidateDCacheIndex(U32 index);- 函数说明: 清除无效的数据cache内的列表,r0=index,该函数仅在特权模式下起作用;- 输入参数: U32 mva;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_CleanInvalidateDCacheIndexMMU_CleanInvalidateDCacheIndexmcr p15,0,r0,c7,c14,2MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_WaitForInterrupt(void);- 函数说明: 等待中断状态,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_WaitForInterruptMMU_WaitForInterruptmcr p15,0,r0,c7,c0,4MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: XXX;- 函数说明: TLB 相关功能的函数;******************************************************************************************* ******************;*/;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateTLB(void);- 函数说明: 无效整个TLB,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateTLBMMU_InvalidateTLBmcr p15,0,r0,c8,c7,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateITLB(void);- 函数说明: 无效指令TLB,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateITLBMMU_InvalidateITLBmcr p15,0,r0,c8,c5,0MOV_PC_LR;/*;******************************************************************************************* ******************;- 函数名称: void MMU_InvalidateITLBMV A(U32 mva);- 函数说明: 无效指令TLB内的虚拟地址,r0=mva,该函数仅在特权模式下起作用;- 输入参数: 无;- 输出参数: 无;******************************************************************************************* ******************;*/EXPORT MMU_InvalidateITLBMV AMMU_InvalidateITLBMV Amcr p15,0,r0,c8,c5,1MOV_PC_LR。

相关文档
最新文档