[D-IV] DE1-SOC 中HPS的 Hello World

Win 7 64bit + DE1-SOC(Cyclone V)


1 环境

按照“DE1-Soc_Getting_Started_Guide.pdf”中的步骤搭建好环境(由于从官网上下载软件会很慢,所以可以从六维上下载Quartus II 13.1及其其它组件如SoCEDSSetup-13.1.0.162,再用附带的破解软件对其一一破解)。要实现“My_First_HPS.pdf”文档中的Hello World!程序,需要安装SoCEDSSetup-13.1.0.162组件,安装此组件时不要忽略了RAM DS-5的安装(不然交叉编译不能进行)。搭建环境的推荐方法是安装Quartus II 13.1后就安装Soc EDS。


将文档中介绍的方法将指定的Linux系统写入到Micro SD卡中,并将SD卡插入DE1-Soc的卡槽内(若BOOTSEL设置无改动,DE1-SOC会默认从SD卡启动)。窃以为,若将DE1-SOC 中HPS的 Hello World操作成功,就标志着开发环境的搭建基本完善


2 串口设置

将DE1-SOC连接至PC上。在PC上安装DE1-Soc板UART USB驱动后,开发板的串口才会被PC识别。


到http://www.ftdichip.com/Drivers/VCP.htm下载一个windows版本的VCPDrivers直接安装即可,或者用“DE1-Soc_Getting_Started_Guide.pdf”中介绍的方法。


到“计算机 >> 管理 >> 设备管理器 >> COM端口”下查看DE1-SOC的串口号。用Putty的串口模式通以串口方式访问DE1-Soc HPS中的Linux系统,用Putty设置串口参数如下:

[D-IV] DE1-SOC 中HPS的 Hello World_第1张图片
Figure1. 串口参数设置

点击Putty上的Open按键通过串口连接在SD卡上的Linux, 重启DE1-Soc开发板开始连接:
[D-IV] DE1-SOC 中HPS的 Hello World_第2张图片
Figure2. Putty连接Linux
Putty访问DE1-SOC Linux系统成功。

3 交叉编译Hello World

参考文档:My_First_HPS.pdf。


在目录C:\altera\13.1\embedded目录下建立HPS目录,用记事本在HPS目录下新建main.c和Makefile文件(去掉记事本.txt后缀),并向两个文件中写入相应内容。

(1) main.c

#include

 

int main(void)

{

         printf("Hello World\r\n");

         return 0;

}


(2) Makefile

#

TARGET = main

#

CROSS_COMPILE = arm-linux-gnueabihf-

CFLAGS = -g -Wall -I ${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include

LDFLAGS = -g -Wall

CC = $(CROSS_COMPILE)gcc

ARCH= arm

build: $(TARGET)

 

$(TARGET): main.o

         $(CC) $(LDFLAGS) $^ -o $@

%.o : %.c

         $(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean

clean:

         rm -f $(TARGET) *.a *.o *~

Makefile参考资料:搜“ 跟我一起写Makefile”或者看《 Linux C 编程一站式编程》中的“ Makefile基础”章节。

(3) 编译

在C:\altera\13.1\embedded下双击Embedded_Command_Shell.bat,用命令将ECS环境转移到HPS文件下,然后执行make命令:
[D-IV] DE1-SOC 中HPS的 Hello World_第3张图片
Figure3. 交叉编译

make命令执行完后,用ls命令即可查看生成的文件。在C:\altera\13.1\embedded\HPS下会生成main和main.o文件。若要删除经make编译生成的文件可用makeclean命令。


Makefile中指定的arm-linux-gnueabihf-gcc编译器和编译头文件环境使得生成的main在windows中不可执行,它只能在Linux系统上被执行。

4 将main下载到DE1-Soc板子上

如果想要在DE1-Soc开发板上的SD卡上的Linux系统中运行main,则需要将main拷贝至SD卡上。


按照“My_First_HPS.pdf”文档描述步骤操作,用root账号通过putty连接DE1-SOC,用网线将PC和DE1-Soc连接到同一个路由器之上,敲入ifconfig命令查询DE1-SOC的IP地址:
[D-IV] DE1-SOC 中HPS的 Hello World_第4张图片
Figure4. DE1-SOC Linux系统IP地址

将main文件拷贝至SD卡是通过Linux系统命令scp来完成的。而执行scp命令的时候是需要密码的,故需先用passwd命令在Putty中为scp命令创建一个密码。然后用scp命令将main拷贝到DE1-SOC的SD卡中的Linux的/home/root目录下。


拷贝文件的操作由Embedded_Command_Shell.bat来完成:
[D-IV] DE1-SOC 中HPS的 Hello World_第5张图片
Figure5. PC和DE1-SOC之间的文件拷贝

拷贝成功后,切换到Putty中,用ls命令查看当前文件下的文件就可看到main:

Figure6. 查看DE1-SOC上SD卡中Linux系统中的拷贝文件

此时,可以通过Putty来执行已在SD卡中Linux系统之上的可执行文件main了(若不能执行,则试试用 chmod  777main 命令修改main权限):
[D-IV] DE1-SOC 中HPS的 Hello World_第6张图片
Figure7. HPS 加载Linux系统执行的Hello world
[2014.11.10 - 11-13:53]
FPGA Note Over.

你可能感兴趣的:(碚大)