一、 实验目的

1、掌握仿真器FS-JTAG 的使用方法;
2、掌握主流的ARM开发环境;
3、掌握GPIO的工作原理及其控制LED编程。

二、 实验仪器设备

PC机、Exynos4412 实验箱。

三、 实验原理

1、ARM仿真器简介

JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件。JTAG仿真器进行开发是目前采用最多的一种调试方式。
FS_JTAG ARM 仿真器是华清远见自主研发的Cortex-A 系列 ARM 仿真器。.该款仿真器可以仿真 Cortex-M3、 ARM7、ARM9、ARM11、Cortex-A8、Cortex-A9 等多个 ARM 处理器系列。

2、GPIO简介

通用I/O接口(General Purpose IO,GPIO)是嵌入式系统中一种非常重要的I/O接口。它具有使用灵活、可配置性好、代价小等优点,在嵌入式中被广泛应用。通俗地说,GPIO就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。

GPIO接口至少有两个寄存器,即“通用 IO 控制寄存器”与“通用 IO 数据寄存器”。数据寄存器的各位都直接引到芯片外部,而对这种寄存器中每一位的作用,即每一位的信号流通方向,则可以通过控制寄存器中对应位独立地加以设置。比如,可以设置某个引脚的属性为输入、输出或其他特殊功能。

Exynos4412 的 GPIO 具有如下特性:

(1) 304 个多功能输入输出 GPIO
(2) 37 组通用 GPIO 和 2 组 memory GPIO。
Exynos4412 的 GPIO 分组预览:
(1) GPA0, GPA1: 14 in/out ports-3xUART with flow control, UART without flow control, and/ or 2xI2C
(2) GPB: 8 in/out ports-2xSPI and/ or 2xI2C and/ or IEM
(3) GPC0, GPC1: 10 in/out ports-2xI2S, and/ or 2xPCM, and/ or AC97, SPDIF, I2C, and/ or SPI
(4) GPD0, GPD1: 8 in/out ports-PWM, 2xI2C, and/ or LCD I/F, MIPI
(5) GPF0, GPF1, GPF2, GPF3: 30 in/out ports-LCD I/F
(6) GPM0, GPM1, GPM2, GPM3, GPM4: 35 in/out ports-CAM I/F, and/ or TS I/F, HSI, and/ or Trace I/F
(7) GPJ0, GPJ1: 13 in/out ports-CAM I/F
(8) GPK0, GPK1, GPK2, GPK3: 28 in/out ports-4xMMC (4-bit MMC), and/ or 2xMMC (8-bit MMC) ),and/ or GPS debugging I/F
(9) GPL0, GPL1: 11 in/out ports-GPS I/F
(10) GPL2: 8 in/out ports-GPS debugging I/F or Key pad I/F
(11) GPX0, GPX1, GPX2, GPX3: 32 in/out ports-External wake-up, and/ or Key pad I/F

Exynos4412 的 GPIO 寄存器分类:

(1) 端口控制寄存器(GPA0CON-GPZnCON)
在 Exynos4412 中,大多数的引脚都可复用,所以必须对每个引脚进行配置。端口控制寄存器(GPXnCON)定义了每个引脚的功能。
(2) 端口数据寄存器(GPA0DAT-GPZnDAT)
如果端口被配置成了输出端口,可以向 GPXnDAT 的相应位写数据。如果端口被配置成了输入端口,可以从 GPXnDAT 的相应位读出数据。
(3) 端口上拉寄存器(GPA0PUD - GPZnPUD)
端口上拉寄存器控制了每个端口组的上拉/下拉电阻的使能/禁止。根据对应位的 0/1 组组合,设置对应端口的上拉/下拉电阻功能是否使能。如果端口的上拉电阻被使能,无论在哪种状态(输入、输出、 DATAn、EINTn 等)下,上拉电阻都起作用。
(4) 驱动能力寄存器(GPA0DRV - GPZnDRV)
设置 GPIO 口的驱动能力。

3、Exynos4412 的 GPIO 寄存器设置GPIO引脚
这里以GPF0CON 控制GPF0DAT寄存器为例说明。

即:

4、实验箱中的LED连接

实验箱中,4个LED灯分别与 GPX2_7、 GPX1_0、 GPF3_4、 GPF3_5 相连,通过这些引脚的高低电平来控制LED 的亮灭,电路原理图如下。

4个LED灯分别与 GPX2_7、 GPX1_0、 GPF3_4、 GPF3_5 相连,通过这些引脚的高低电平来控制LED 的亮灭。

因要输出电平控制LED,故相应端口(引脚)应设置为输出。按其控制格式分别对控制寄存器和数据寄存器进行设置。

根据三极管的特性,当这几个引脚输出高电平时,集电极和发射极导通, LED点亮;反之,LED熄灭。
因此:
(1)设置及点亮GPX1_0所对应的LED灯,其对应的操作为:

  • 设置其控制寄存器GPX1CON[0:3]为1(即输出)
  • 向数据寄存器的对应位GPX1DAT[0]写入高电平

(2)设置GPX2_7所对应的LED灯:

  • 设置其控制寄存器GPX2CON[28:31]为1
  • 向数据寄存器的对应位GPX1DAT[7]写入高电平

(3)设置GPF3_4、 GPF3_5所对应的LED灯:

  • 设置其控制寄存器GPF3CON[16:23]为1:
  • 向数据寄存器的对应位GPF3DAT[4:5]写入高电平:

四、 实验内容及注意事项

1、在PC机中搭建ARM开发环境;
2、通过开发环境编写控制LED灯的程序。

五、 实验组织运行

根据本实验指导书,学生自主训练为主。

六、 实验步骤

(一)开发环境搭建

Eclipse for ARM 是借用开源软件 Eclipse 的工程管理工具,嵌入 GNU 工具集,使之能够开发 ARM 公司 Cortex-A 系列的 CPU,这里使用 Eclipse for ARM作为开发软件。在开发箱中的配套光盘中,打开 FS-JTAG这个目录,可以看如图所示的光盘资料。 Eclipse for ARM 开发工具所在光盘路径: 华清远见\开发平台1\工具软件Windows\FS-JTAG。

1、win7/8 环境安装 FS-JTAG 工具

(1)安装 GCC 编译工具
双击安装“工具软件\Windows\FS-JTAG\Yagarto 工具包”目录下的文件:yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.exe

(2)安装 Yagarto 工具包

双击安装“\工具软件\Windows\FS-JTAG\Yagarto 工具包”目录下的文件:yagarto-tools-20100703-setup.exe

(3)安装 FS-JTAG 调试软件
双击“\工具软件\Windows\FS-JTAG\FS_JTAG 安装包”下的 setup.exe 安装 FS-JTAG 工具。

(4)安装 FS-JTAG 驱动

将 FS-JTAG 通过 USB 线与 PC 连接,打开“设备管理器”。

右键点击选择“更新驱动”。

选择“浏览计算机以查询驱动程序软件®”:

点击浏览选择“D:\华清远见-嵌入式实验箱\开发平台1\工具软件\Windows\FS-JTAG\DRIVER”目录。“包括子文件夹” 必须选择,点击“下一步”。

安装过程出现上图提示,点击“始终安装此驱动程序软件(I)”继续安装。

注意:此安装过程需要进行 3 次,直到设备管理器中没有叹号标记或未知设备。如下:

(5) 安装 JRE

双 击 安 装 “工 具软 件 \Windows\FS-JTAG\JRE ” 目 录 下 的 文 件 :jre-6u7-windows-i586-p-s.exe。
注:如提示无法安装,可能是因为本机上已经安装有JRE,可跳过此步骤。

2、连接硬件平台
按下图所示,连接仿真器、 USB 转串口线(实验箱中连接串口2)、电源。

3、Putty 串口终端配置
运行“工具软件\Windows\串口调试工具\PUTTY.EXE”。


关闭开发板电源,将拨码开关 SW1 调至 0110(EMMC 启动模式),然后打开电源。此时串口终端会显示:

4、Eclipse for ARM 使用

Eclipse for ARM 工具路径: 工具软件\FS-JTAG\eclipse\eclipse-cpp-helios-SR1-win32.zip。解压文件后,运行 eclipse.exe 文件。(注意:在 Win7 以上的用户,使用管理员模式打开)

(1) 指定一个工程存放目录
Eclipse for ARM 是一个标准的窗口应用程序,可以单击程序按钮开始运行。 打开后必须先指定一个工程存放路径,如图所示。


第一次打开会出现这个界面,然后点击“Workbench”进入工程界面。弹出 工作界面。

5、导入一个已有工程

拷贝“开发平台1\实验代码\1、ARM体系结构与接口技术\实验代码\04-led” 到 eclipse工作目录下。如: D:\eclipse_projects\FS4412 目录。
如图所示,在 Project Explorer 窗口中右击鼠标,选择“Import…”,如下图所示。

选择“Import…”后,出现如下图所示的窗口,选中“Existing Projects Into Workpace”然后点击“Next”


选择“Next”后出现如下窗口,点击“Browse…”  出现“浏览文件夹”窗口,在“浏览文件夹”窗口中选中实验“04-led”后点击“确定”


点击“确定”后出现如下所示窗口,直接点击“Finish”即可。

添加成功后可以在“Project Explorer”中看到“04-led-ram”工程成功导入。


(二)调试工程

1、配置 FS-JTAG 调试工具
打开 FS-JTAG 软件,在 Target 选项中选择 exynos4412,通信速率设置 200kHz。单击 Connect 按钮后,该按钮会变为 Disconnect,如图所示,即表示已经连接目标板。由于当前开发板还没有运行程序,仿真器无法获取相关信息,所以显示错误报告,是正常现象。

2、配置调试工具
选中“Run” / “Debug Configuras…”

出现如下所示窗口,在“Zylin Embedded debug (Native)”选项上右击鼠标,在点击“New”选项

点击“New”选项后出现如下所示窗口
【main 选项卡】

然后再点击“Main”选项栏中的“Browse”选项选择将要执行的程序,调试的程序格式为 xx.elf 的文件。找到 LED_GPIO 工程对应的目录,选中目录中的 led_gpio.elf 文件,然后选择“打开”,如下图所示。

在 Debugger 选项卡中的 Main 子选项卡中的 GDB debugger 的框中单击“Browse”按钮选择前面安装的 arm-none-eabi-gdb.exe (这里选择自己安装 gcc 编译工具的安装目录 C:\Program Files\yagarto\bin)。

在 GDB Command file 中选择自己工程目录下的 Exynos4412.init 文件,如下图。

在 Command 选项卡中输入如下内容,如图所示。

在 Command 选项中,如下图所示,在“Initialize’ commands”中添加 3 行命令

添加完后点击如下图所示的“Apply”,调试选项配置完成。再点击“Debug”选项进入就可以进行调试了。

单击“Apply”按钮后,再单击“Debug”按钮开始调试运行,会出现调试主界面,如图所示。

注意:在进入 Debug 模式前,必须保证此时 FS-Jtag 为下图所示的状态,否则不能成功进入 Debug状态

进入调试界面后,点击全速运行 的调试按钮,如果开发板上 led 灯开始闪烁,则表示整个开发环境搭建成功。程序源码见附录。

3、修改程序,将延时改为5秒(5000ms),重新编译装入程序,观察LED灯闪烁的变化。将修改部分及重新编译操作抓图如下。

4、提高:本实验箱的LED灯的实际电路连接如下图。请根据此电路图修改程序,实现4个LED灯均闪烁。

附录:

/**@brief   This example describes how to use GPIO to drive LEDs*@date: 02. June. 2014*@author  liujh@farsight.com.cn*@Contact  Us: http://dev.hqyj.com*Copyright(C) 2014, Farsight
*/#include "exynos_4412.h"/*********************************************************************** @brief     mydelay_ms program body* @param[in] int (ms)* @return       None**********************************************************************/
void mydelay_ms(int ms)
{int i, j;while(ms--){for (i = 0; i < 5; i++)for (j = 0; j < 514; j++);}
}/*-------------------------MAIN FUNCTION------------------------------*/
/*********************************************************************** @brief     Main program body* @param[in]   None* @return       int**********************************************************************/
int main(void)
{/*   *Config  */GPX2.CON = (GPX2.CON & ~(0xf<<28))| 1<<28;      //GPX2_7:output, LED2GPX1.CON = (GPX1.CON & ~(0xf)) | 1;                //GPX1_0:output, LED3GPF3.CON = (GPX3.CON & ~(0xf<<16 | 0xf<<20)) | (1<<16 | 1<<20);
//GPF3_4:output, LED4
//GPF3_5:output, LED5while(1){//Turn on LED2GPX2.DAT |= 0x1 << 7;   mydelay_ms(500);//Turn on LED3GPX1.DAT |= 0x1;//Turn off LED2GPX2.DAT &= ~(0x1<<7);mydelay_ms(500);//Turn on LED5GPF3.DAT |= (0x1 << 5);//Turn off LED3GPX1.DAT &= ~0x1;mydelay_ms(500);//Turn on LED4GPF3.DAT |= (0x1 << 4);//Turn off LED5GPF3.DAT &= ~(0x1 << 5);mydelay_ms(500);//Turn off LED4GPF3.DAT &= ~(0x1 << 4);}return 0;
}

嵌入式系统开发与应用——ARM 开发环境搭建及GPIO控制LED实验相关推荐

  1. 嵌入式系统体系结构编程 Ubuntu之QTE环境搭建友善之臂Tiny4412

    @Date 2021-12-26 @Author C君 所用环境 VMware-workstation 16.1.0 ubuntu14 (资料里的14版本32位,是的我装回来了233) arm-lin ...

  2. 蓝牙芯片nRF51822开发系列(一):环境搭建和GPIO使用(点亮LED)

    蓝牙芯片nRF51822开发系列(一):环境搭建和GPIO使用(点亮LED) 前言(文章末尾获取工程源码) 一.开发必备 二.开发环境搭建 1.创建文件 2.新建工程 三.编写代码 GPIO详解 使用 ...

  3. JSP开发的工具下载与环境搭建(Windows开发环境)

    一.JSP开发的工具下载与环境搭建 JSP技术的强势: (1)一次编写,到处运行.在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改. (2)系统的多平台支持.基本上可以在所有平台上的 ...

  4. IOS开发基础之网易新闻环境搭建异步请求json,AFN网络封装第1天

    IOS开发基础之网易新闻环境搭建异步请求json,AFN网络封装第1天 视频资料是2015年的,但是AFN是导入框架的关键文件,我尝试使用cocoapods安装最新的AFN,虽然成功了,但是版本太高, ...

  5. 嵌入式系统 实验一 GPIO口控制LED实验

    实验一 GPIO口控制LED实验 1 实验目的 了解并掌握如何控制 STM32 的 GPIO: 掌握控制 LED 的电路原理和程序代码: 2 实验环境 硬件:1 个空气温湿度传感器模块.1 个 ST- ...

  6. vs 2017 建立 php,WIN10系统下OSG+VS2017或者vs2019环境搭建

    ** WIN10系统下OSG+VS2017或者vs2019环境搭建 ** 一.资料准备 1.OSG源码下载地址:http://www.openscenegraph.org/index.php/down ...

  7. 关于FS4412的ARM开发环境搭建并点亮LED灯

    目录 一.ARM开发环境搭建 1.安装 GCC 编译工具 2.安装 Yagarto 工具包 3.安装FS-JTAG调试软件 4.安装JRE 5.安装FS-JTAG驱动 6.安装USB转串口驱动 7.安 ...

  8. 【STM32单片机学习】第三课:开发板介绍和Keil环境搭建

    [朱老师课程总结 侵删] 第一部分.章节目录 3.3.1.STM32开发板详细介绍 3.3.2.STM32开发板ISP下载原理分析 3.3.3.STM32F4的浮点运算单元 3.3.4.MDK5的开发 ...

  9. Windows驱动开发(1)HelloWorld环境搭建

    开发环境 Windows Version: 2004 (19041.264) WDK Version: 10.0.19041.1 SDK Version: 10.0.19041.1 Visual St ...

  10. 驱动开发 - WDK 调试及 SVN 环境搭建[转]

    由于从公司辞职了,所以以前在公司里搭建的驱动开发环境也就 Game Over 了, 同样由于那环境是很久以前搭建的,自己也有很多记不清楚的地方了, 而且其中还是有很多需要注意的地方的,所以在这里顺便做 ...

最新文章

  1. 区块链之比特币的潜在激励
  2. 如何写出一手好的业务代码?
  3. Vue nextTick 机制
  4. 2020 Jiangsu Collegiate Programming Contest
  5. openMVG跑自定义数据出错
  6. 企业实战(Jenkins+GitLab+SonarQube)_12_Jenkins+soanr服务器搭建和代码检查
  7. java代码题目_java题目代码?
  8. jQuery Ajax请求成功后,为什么一直在error函数里
  9. mysql中php生成唯一ID
  10. UltraNumTextBox【实现所有数字输入的同时,可以控制当控件禁用时ForeColor】
  11. iCartoonFace:爱奇艺的动漫人脸数据集
  12. 城市统计年鉴数据查询
  13. 软件multisim的安装教程
  14. wget 命令的使用:HTTP文件下载、FTP文件下载
  15. jenkins恢复删除的文件
  16. 新手如何建立网站,网站建设的几个步骤。
  17. PWM控制电机转速、PWM原理
  18. SpringBoot整合MongoDB实现ResultFul风格接口
  19. python安装后怎么打开_python软件怎么打开
  20. Qt android 打印调试

热门文章

  1. 亮道剧学铭:激光雷达系统量产上车没那么容易
  2. 安装用友U8的常见错误
  3. Unity3d和连接MySQL数据库实现登陆注册等功能
  4. 史上最全Python快速入门教程
  5. kali使用外接usb蓝牙
  6. ArcGIS Pro与ArcGis区别
  7. windows 两台电脑通过移动热点传输文件
  8. 第三届智能科学国际会议ICIS2018征稿北京大学11月2日-5日召开。附史忠植院士简历(公号发“智能科学国际会议”下载PDF)
  9. 论文中的i.e.等简写
  10. 请求指纹认证授权秘钥使用