gec网站程序源码-驱动课程资料 GEC6818开发板裸机教程

目录

第一章 搭建裸机开发环境(2)

1.) 安装 ECLIPSE (2)

2.) 创建第一个项目 (4)

3.) 编译源代码 (7)

4.) 下载源代码到SD卡 (9)

5.)设置开发板启动顺序(15)

6.)通过TF卡运行裸机程序(15)

第2章 X6818裸机实例(16)

1.)X6818裸机实例1-LED跑马灯实验(16)

2.)X6818裸机实例2-蜂鸣器实验(18)

3.)X6818裸机示例3-重置实验(21)

4.)X6818裸机示例4键控制LED实验(23)

5.)X6818裸机实例5键控制LED和蜂鸣器实验(23)

6.)X6818裸机示例6-LED模拟肾跳动实验(24)

7.)X6818裸机实例7键中断实验(24)

8.)X6818裸机实例8串口SHELL实验(24)

9.)X6818裸机实例9-串口输入实验(27)

10.)X6818裸机示例10-移植PRINTF功能实验(27)

第一章 搭建裸机开发环境

开发裸机的方法有很多。 以前,在S3C2410和S3C2440平台上,ADS1.2或

就是MDK。不过这个工具主要是针对ARM9平台的。 对于后续的 cortex-A8 和 cortex-A9 平台,他们

意思是心有余而力不足。 也有一些同学喜欢直接在Linux下进行裸机开发,但是对于WINCE的开发

学生可能会遇到困难。 在Linux下进行开发,需要安装Linux操作系统并熟悉makefile。

交叉编译工具链等。正因为如此,我们自主搭建了强大的eclipse开发平台,制作了四套eclipse开发环境,同时支持linux32位、linux64位、windows32位、windows64位操作系统。有了这四个

设置eclipse开发环境,无论你使用ubuntu32位、ubuntu64位,还是fedora32位、fedora64

Bit,或者winxp、win7等,都可以开发裸机。 同时,烧录程序不再局限于Linux系统。 无论您使用什么操作系统,都可以轻松地将图像文件传输到SD卡。 让我们开始我们神奇的裸机开发之旅吧!

1.) 安装eclipse

第一步:确认自己的PC开发环境。 开发板光盘中有以下四个eclipse包:

eclipse-kepler-for-arm-windows-x86_32.7z

eclipse-kepler-for-arm-windows-x86_64.7z

eclipse-开普勒-for-arm-gtk-linux-x86_64.7z

eclipse-开普勒-for-arm-gtk-linux-x86_32.7z

从命名方式上我们可以清楚的了解到其中的区别以及我们需要的开发套件。 这些软件包都是绿色软件,不需要安装,解压即可。 由于笔者使用的是winxp 32位操作系统,所以选择了第一个包。 读者可以根据自己的PC环境选择相应的安装包。 后面的说明就不再重复了。

第二步:解压eclipse安装包。

将eclipse-kepler-for-arm-windows-x86_32.7z复制到安装目录,如盘符并解压,如下图:

第三步:启动eclipse

解压后的安装目录中有两个文件,eclipse.bat和eclipse.exe。 双击 eclipse.bat 启动。 由于使用eclipse需要声明一些环境变量,所以我们特意制作了一个脚本eclipse.bat。 双击声明环境变量,同时启动eclipse。 这样就不需要自动设置环境变量了。 当然,用户也可以通过双击eclipse.exe自动设置环境变量然后运行eclipse,这里不再赘述。

启动后界面如下:

这里是欢迎界面,直接关闭,进入我们需要的开发界面:

注意,第一次启动eclipse时,会提示我们选择工作空间路径。 这里我们设置为

D:workspacex6818,当然用户也可以将其设置为自己喜欢的路径。

2.) 创建第一个项目

第1步:双击eclipse.bat打开eclipse第2步:在项目中

右键单击Explorer->New->C Project的空白栏,

(如果图中的路径显示为x4418,请不要认为是错误的,我做实验的时候忘记截图了一些图片,这里使用的是x4418的图片,你做实验时的路径是x6818,下面不再解释。)

弹出创建新项目的对话框:

在项目名称中输入项目名称。 这里我们将其命名为LED。 使用默认位置前面有一个复选标记。 默认情况下它已经被选中。 下面的Location栏是我们的项目目录。 由于上面我们已经将默认工作空间设置为D:workspace,所以我们构建的项目路径为:D:workspaceLED。 在“项目类型”列中,选择“Makefile 项目”下的“空项目”。 忽略工具链并单击完成。

新项目如下:

我们可以进入D:workspacex6818LED目录,里面只有两个文件:

这是由 eclipse 手动生成的。 找到我们提供的第一个裸机工程文件目录x6818-led,将以上内容全部复制:

程抄了。

复制后的工程目录如下:

这里的include目录是我们已经构建好的一些基于s5p6818的头文件,用户可以直接调用。 soure目录是源代码文件。 程序首先会从start.S文件开始执行,该文件初始化了一系列6818个寄存器,比如看门狗等,之后会通过bl主句跳转到main.c执行main函数。

项目目录中,link.ld为链接文件,Makefile为编译源代码所需的脚本文件,mk6818.exe用于估计校验和。 如果没有这个文件,我们之前生成的镜像下载到SD卡后就无法运行。 。

gec网站程序源码-驱动课程资料 GEC6818开发板裸机教程

注意gec网站程序源码,在我们给你的源代码中,tools/windows下可能没有mk6818.exe。 如果没有,请将 x6818.exe 重命名为 mk6818.exe。 要重命名,请右键单击 x6818.exe 以查看重命名选项。 这一步很重要,请记住。

3.) 编译源代码

右键单击 Project Explorer 列中的项目名称 x6818-led,然后选择 Build Project:

也可以使用快捷键CTRL+B进行编译。 编译时界面如下:

编译完成后,会在项目目录下生成输出目录:

图中的x-ledpak.bin就是我们最终需要的镜像文件。 注意不要使用x-led.bin。 该文件二次启动时未打包,不能直接使用。

4.) 下载源代码到SD卡

对于x6818开发板,在开发裸机时,我们几乎都是直接将裸机程序烧录到TF卡上运行。 WindowsXP或WIN7下,可以使用我们自编译的烧录工具x6818_Fusing_Tool.exe进行烧录。 该软件与x210和x4412开发板无缝兼容。

注意,下载到TF卡时,我们首先需要对TF卡进行分区。 从 CD 中找到 PartitionManager.exe

工具并打开,界面如下:

上图中的H盘就是我们插入的TF卡分区。 我们需要使用这个工具在TF卡上预留一些空间用于存储bootloader或者裸机程序。 首先我们右键点击底部图标的可移动磁盘(H:),点击删除分区,如下图:

软件会弹出确认界面:

。 再次右键单击该分区,然后单击“创建分区”:

在请指定分区后面的可用空间大小一栏,填写我们需要预留的空间。 我们这里填写100M,对于bootloader或者裸机来说已经足够了。 在请为新分区选择文件系统中选择 FAT32。

单击“是”,然后进入主界面快捷菜单栏,单击“应用”。 分区成功后,提示如下:

至此,分区成功。 用户还可以在ubuntu下使用gparted工具进行分区。

使用管理员权限运行 IROM_Fusing_Tool_6818.exe 工具。 点击Browse浏览到编译好的uboot。 需要烧录的uboot文件位于out/release目录下。 文件名为:ubootpak.bin,如下图:

选择我们需要刻录的正确的C盘(我们之前设置SD的C盘是K,这里选择K)。 然后点击START,出现Fusing image done,表示刻录完成。

至此,SD启动卡的制作就完成了。

linux下,方法类似。笔者使用的是Ubuntu 64位14.04系统。 安装对应版本的eclipse后,导入源码并在Linux平台下编译。 无需更改工具中的文件。 编译后会形成4个文件。

文档。

Ubuntu下制作启动卡:

第一步:准备一张不大于2GB的TF卡,插入Ubuntu操作系统的PC上; 第二步:删除TF卡所有分区; 在Linux终端窗口中,使用fdisk /dev/sdb命令删除drop原来的

有分区,sdb是系统为TF卡分配的设备节点。 注意,这取决于节点名称,可能是 sdc、sde 等。使用以下规范查询设备节点:

猫/过程/分区

示例如下:

输入d删除分区,输入w保存更改的分区信息。至此,原来的

/dev/sdb1 被删除。 取出 TF 卡并将其插入 PC。

注意:必须先拔掉再插入,否则仍然会提示/dev/sdb1节点存在,从而导致错误。 步骤3:使用gparted工具在TF卡上预留256M空间用于存储uboot镜像。 使用以下命令打开TF卡分区表:

选择Partition->New,为uboot预留256M空间,其余分区使用fat32格式,如下图:

单击“添加”,在菜单中选择“应用所有操作”,完成TF卡的分区。

第四步:将TF卡上的剩余空间低格为fat32格式 sudo mkfs.vfat /dev/sdb1

第五步:进入镜像生成目录,即输出目录,执行以下指令将uboot烧录到TF卡上: cd output

sudo /home/lixu/eclipse/X6818-NO-OS/x-beep/tools/linux/s5p6818-sdmmc.sh/dev/sdb x-beeppak.bin

注意,这是作者的路径gec网站程序源码,您的路径请参考此。

注意这里的/dev/sdb是TF卡的节点。 该节点由Linux系统手动分配。 也可能是sdc、sde等,用户可以查询节点名称,然后执行里面的烧录步骤。

5.) 设置开发板的启动顺序

x6818开发板默认从SD0通道启动。 如果SD0卡槽中有可以启动6818的TF卡,则从TF卡启动,否则从EMMC启动。 我们将裸机程序烧录到TF卡后,只需插入SD0通道,即x6818开发板两侧的TF卡插槽即可。 启动后,我们就可以运行裸机程序了,不用担心镜像是否已经烧录到开发板上了。 无需设置尾纤。

6.) 通过TF卡运行裸机程序

将烧录好裸机程序的TF卡插入x6818开发板两侧的TF卡插槽中,并给开发板上电。 无需按任何键盘。 四个 LED 灯已经来回闪烁。

第2章 X6818裸机实例

1.) X6818裸机示例1-LED跑马灯实验

1. 示意图

上图中,开发板上电后,在不按任何键盘的情况下,VCC3P3_SYS会产生3.3V的电流。 D26不需要GPIO控制,常亮,也就是我们所说的电源指示灯。 对应的GPIO如下:

LED指示灯 GPIO端口

D22 GPIO_B26

D23 GPIO_C11

D24 GPIO_C7

D25 GPIO_C12

当对应的GPIO口为低电平时,对应的LED灯点亮,反之亦然。

2.源代码

注:由于作者的工作空间在该盘符的根目录下,所以前面提到的所有源码包都在该盘符中。 在介绍路径的时候,都会按照这个路径来介绍。 如果用户设置在其他磁盘上,源代码包路径也会相应改变。 特此声明,今后不再重复。

源码路径:

D:workspacex6818x6818-ledsourcemain.c

D:workspacex6818x6818-ledsourcetester-led.c

D:workspacex6818x6818-ledsourcestartupstart.S

gec网站程序源码-驱动课程资料 GEC6818开发板裸机教程

D:workspacex6818x6818-ledsourcehardware hw-led.c

这是我们学习裸机开发的第一个例子。 我们将详细介绍源代码中的每个文件。

main()主函数中,do_system_initial函数首先调用led_initial函数初始化LED,然后通过tester_led函数控制对应的LED亮灭。整个main函数中,关键在于tester_led函数

while(1) 无限循环每 50ms 设置一次 LED 灯状态。 时间间隔通过延时函数mdelay实现,LED灯状态通过变量索引实现。

LED初始化函数如下:

无效 led_initial(无效)

/* LED1 */

gpio_set_pull(S5P6818_GPIOB(26), GPIO_PULL_UP);

gpio_direction_output(S5P6818_GPIOB(26), 1);

/* LED2 */

gpio_set_pull(S5P6818_GPIOC(11), GPIO_PULL_UP);

gpio_direction_output(S5P6818_GPIOC(11), 1);

/* LED3 */

gpio_set_pull(S5P6818_GPIOC(7), GPIO_PULL_UP);

gpio_direction_output(S5P6818_GPIOC(7), 1);

/* LED4 */

gpio_set_pull(S5P6818_GPIOC(12), GPIO_PULL_UP);

gpio_direction_output(S5P6818_GPIOC(12), 1);

这里,为每个 GPIO 端口设置两个寄存器。 以LED4为例进行说明,其他同理。 GPIO_设置_拉动

该函数用于设置GPIO_C12为上拉,gpio_direction_output函数用于设置GPIO_C12为输出,默认输出电平为1。

上述LED初始化函数将四组GPIO设置为输出,并同时将其全部设置为高电平,从而使能上拉。 根据硬件电路分析,初始化后,四个LED灯会熄灭。 然后通过LED设置函数led_set_status()来控制LED的亮灭。 对应的程序如下:

void led_set_status(枚举 led_name 名称, 枚举 led_status 状态)

开关(名称)

案例 LED_NAME_LED1:

if(状态==LED_STATUS_ON)

gpio_direction_output(S5P6818_GPIOB(26), 0);

否则如果(状态==LED_STATUS_OFF)

gpio_direction_output(S5P6818_GPIOB(26), 1);

休息;

案例 LED_NAME_LED2:

if(状态==LED_STATUS_ON)

gpio_direction_output(S5P6818_GPIOC(11), 0);

否则 if(status ==LED_STATUS_OFF)gpio_direction_output(S5P6818_GPIOC(11), 1); 休息;

案例 LED_NAME_LED3:

if(状态==LED_STATUS_ON)

gpio_direction_output(S5P6818_GPIOC(7), 0);

否则如果(状态==LED_STATUS_OFF)

gpio_direction_output(S5P6818_GPIOC(7), 1);

休息;

案例 LED_NAME_LED4:

if(状态==LED_STATUS_ON)

gpio_direction_output(S5P6818_GPIOC(12), 0);

否则如果(状态==LED_STATUS_OFF)

gpio_direction_output(S5P6818_GPIOC(12), 1);

休息;

默认:

休息;

该函数有两个传入参数,名称和状态。 名称对应于灯的数量,状态指示 LED 是亮还是灭。 当其打开时,将相应的GPIO设置为低电平,当其关闭时,将其设置为高电平。 这个程序巧妙地使用了可变索引,通过它依次点亮四个灯。 对于详细的机制,读者可以仔细考虑源码中的while(1)无限循环程序。至此,整个main函数

计数结束了。

在前面的源代码路径中,列出了许多源文件,但似乎只有 main.c 文件真正在做工作。 其他文件可以删除吗? 答案是不。 在嵌入式平台上,它不像微控制器。 只需编写一个 main 函数就足够了。 我们还需要初始化显存、看门狗、中断等,实现源码的自复制等等。

用eclipse编译时,还需要相应的链接文件。 makefile 指定源代码的编译和目标的生成。 3 实验现象

将TF卡插入x6818开发板左侧的TF卡槽,给开发板上电,你会看到四个LED灯开始循环显示。 我们可以通过设置mdelay函数的传入参数来调整管道时间间隔。

2.)X6818裸机示例2-蜂鸣器实验

1.导入现有项目

在本章中,我们学习如何导出现有项目。

第一步:将蜂鸣器示例程序x6818-beep复制到工程目录下; 第二步

步骤:在eclipse中Project Explorer的空白处右键单击,点击Import。

弹出如下界面:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 gec网站程序源码-驱动课程资料 GEC6818开发板裸机教程 https://www.wkzy.net/game/197783.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务