视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
嵌入式实验3 C语言程序实验
2025-09-25 23:11:50 责编:小OO
文档
专业班级:   

学号:                    姓名:                  

嵌 入 式 技 术 实 验 报 告

实验项目名称:          2.8  C语言程序实验                     

实验日期:  2012年10月9日       实验成绩:             

实验评定标准:

1)实验程序是否正确

A(  )B(  )C(  )

2)实验仿真、结果及分析是否合理

A(  )B(  )C(  )

3)实验报告是否按照规定格式

A(  )B(  )C(  )

一、实验目的:

通过实验了解使用ADS 1.2编写C语言程序,并进行调试。

二、实验器材:

硬件:PC机  一台

z 软件:Windows98/XP/2000系统,ADS 1.2集成开发环境

三、实验内容(实验过程):

    编写一个汇编程序文件和一个C程序文件。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后调跳转到C程序运行,这就是一个简单的启动程序。C程序使用加法运算来计算1+2+3+...+(N-1)+N的值(N>0)。

四、实验步骤:

   (1)启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程ProgramC;

(2)建立源文件Startup.S和Test.c,编写实验程序,然后添加到工程中;

(3)设置工程链接地址RO Base为0x40000000,RW Base为0x40003000;设置调试入口地址Image entry point为0x40000000;

(4)设置位于开始位置的起始代码段;

(5)编译链接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试;

(6)在Startup.S的“B Main”处设置断点,然后全速动行程序;

(7)程序在断点处停止。单步运行程序,判断程序是否跳转到C程序中运行;

(8)选择【Processor Views】->【Variables】)打开变量观察窗口,观察全局变量的值,单步/全速运行程序,判断程序的运算结果是否正确。

五、实验程序:

C语言实验参考程序:

#define uint8 unsigned char 

#define uint32 unsigned int 

#define N 100 

uint32 sum; 

// 使用加法运算来计算1+2+3+...+(N-1)+N的值。(N>0) 

void Main(void) 

{ uint32 i; 

sum = 0; 

for(i=0; i<=N; i++)

{ sum += i; 

while(1);}

简单的启动代码

; 启动文件。初始化C程序的运行环境,然后进入C程序代码。

       IMPORT  |Image$$RO$$Limit| 

       IMPORT  |Image$$RW$$Base| 

       IMPORT  |Image$$ZI$$Base| 

       IMPORT  |Image$$ZI$$Limit| 

       IMPORT  Main ;         声明C程序中的Main()函数

       AREA   Start,CODE,READONLY ; 声明代码段Start 

       ENTRY ;                标识程序入口

       CODE32 ;               声明32位ARM指令

Reset   LDR SP,=0x40003F00 

        ; 初始化C程序的运行环境

        LDR  R0,=|Image$$RO$$Limit| 

        LDR  R1,=|Image$$RW$$Base| 

        LDR  R3,=|Image$$ZI$$Base| 

        CMP  R0,R1 

        BEQ  LOOP1 

LOOP0  CMP  R1,R3 

        LDRCC  R2,[R0],#4 

        STRCC  R2,[R1],#4 

        BCC  LOOP0 

LOOP1  LDR  R1,=|Image$$ZI$$Limit| 

        MOV  R2,#0 

LOOP2  CMP  R3,R1 

        STRCC  R2,[R3],#4 

        BCC  LOOP2 

        B Main ;       跳转到C程序代码Main()函数

        END

六 、实验仿真、结果及思考分析:

(1)在实验参考程序中,Startup.S文件的作用是什么?如果没有Startup.S文件,C程序会运行出错吗?

     答:Startup.S文件的作用是为上述的汇编语句提供编译的环境。如果没有这个文件,则C语言程序的运行不会出错,因为C语言程序的运行是的。

(2)实验程序中的Main()函数名是否可以更改为其它名字?(提示:Main只是一个标号)

      答:可以,因为Main只是一个标号下载本文

显示全文
专题