嵌入式上机(二)Exynos4412开发板


uboot又从2010到2013版本


一、SD卡制作启动盘

1.拷贝sdfuse_q

Windows下:将提供资料中的sdfuse_q拷贝到虚拟机的共享目录下
在这里插入图片描述
进入虚拟机:将共享目录下的sdfuse_q文件夹拷贝到~目录下

cp /mnt/hgfs/share/sdfuse_q/ ~ -a

2.编译

进入文件夹编译:

cd ~/sdfuse_q
make
chmod 777 *.sh

3.识别SD卡

  1. 用读卡器将SD卡插入电脑

  2. 让虚拟机识别
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 查看挂载情况,确定设备节点

df -Th

在这里插入图片描述
可以看到节点是sdb1,它挂载在/media/522C-B6E6

4.制作SD卡

将uboot烧写到SD卡中。

cd ~/sdfuse_q
sudo ./mkuboot.sh /dev/sdb1

二、安装uboot2013

1.拷贝

在电脑上重新插入SD卡,如果提示需要格式化,格式化即可。

虚拟机上在SD卡目录下创建目录sdupdate

sudo mkdir /media/522C-B6E6 sdupdate

并将实验移植后的镜像u-boot-fs4412.bin拷贝到该目录下。
在这里插入图片描述

cp /mnt/hgfs/share/u-boot-fs4412.bin /media/522C-B6E6/sdupdate

2.SD卡启动方式

将SD卡拔出插入开发板卡槽内,拨码拨至1000(SD卡启动)
连接开发板
启动串口调试工具

在这里插入图片描述
当前的eMMc的u-boot是2010版本,显示SDMMC,即SD卡启动成功。

3.SD烧写到flash

uboot下:将SD卡中2013版本的uboot烧写到flash,这样eMMC中的uboot就变成了2013版本。

sdfuse flashall

关机,将拨码拨至0110(eMMC启动),重启开发板

在这里插入图片描述
显示eMMC,uboot版本为2013.

三、交叉开发环境搭建

1.配置开发网络环境

将虚拟机的ip修改为192.168.100.192
在这里插入图片描述

2.配置交叉工具链

sudo gedit /etc/bash.bashrc

在这里插入图片描述
确保这句话在文件的末尾处,如果不在,添加这句话在文件末尾。

export PATH=$PATH:/usr/local/toolchain/toolchain-4.6.4/bin/

重启配置文件

source /etc/bash.bashrc

工具链的测试

arm-none-linux-gnueabi-gcc -v

在这里插入图片描述

3.交叉开发编译

#include<stdio.h>
int main(){
	printf("hello\n");
	return 0;
}

使用交叉开发编译版本的gccarm-none-linux-gnueabi-gcc来生成可执行文件,这个文件就拷到开发板上运行。
在这里插入图片描述

4.拷贝文件

将实验二中的U-Boot之外的镜像文件夹下的文件拷贝到共享文件夹下。
在这里插入图片描述

虚拟机下:

cp /mnt/hgfs/share/exynos4412-fs4412.dtb /mnt/hgfs/share/ramdisk.img /mnt/hgfs/share/uImage /tftpboot/

四、eMMC方式启动开发板

1.设置eMMC

还是将拨码拨至0110(eMMC启动)

2.tftp方式传输文件

(1)测试ping

ping Ubuntu主机ip

ping 192.169.100.192

可以ping通虚拟机才可以tftp传文件到开发板上

(2)烧写

uboot命令行下:

  1. 烧写内核镜像
tftp 41000000 uImage
movi write kernel 41000000
  1. 烧写设备树文件
tftp 41000000 exynos4412-fs4412.dtb
movi write dtb 41000000
  1. 烧写文件系统镜像
tftp 41000000 ramdisk.img
movi write rootfs 41000000 300000

这个300000是烧写大小

3.设置启动参数

uboot命令行下:

setenv bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000
setenv bootargs
saveenv	

4.重启开发板

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.2 产品简介 UT-Exynos4412开发板是一款功能极为强大的高端ARM Coretex-A9开发平台,采用Samsung最新的Exynos4412Exynos4412 Quad),主频达到1.4~1.6GHz;Exynos4412的主要特性为:QuadCore、WXGAresolution、1080pHDTVdisplay throughoutHDMI、I2Ssupports、USBHost&Device2;.0、HSICinterface、LPDDR2PackageonPackage、Chip2Chip等;内建32/32KB数据/指令一级缓存,1MB的级缓存;GPU采用的是Mali 400MP四核心图形处理器,支持2D/3D图形加速;内建HDMI1.4(3D feature)兼容HDCP1.1和DVI1.0;内部的MFC支持MPEG-2/4、H.263、H.264等的编解码和VC1的解码。硬件编解码器实现视频会议和数字电视。该芯片采用了最新的32nm HKMG的先进工艺制程。相比于之前的45nm工艺,功耗方面有了明显的降低,即使是四核,同等测试下的功耗比双核的4210低了40%。四核处理器在达到双核两倍性能的同时,功耗却只有双核的八成,续航和发热都可能会大大改善。目前三星最新的N7100 GALAXY Note2和GALAXY SIII系列手机采用的就是此款芯片,表现相当出色。Exynos4412处理器采用0.4mm pitch值的12x12平方毫米FCMSP封装,降低PCB加工工艺要求。 UT-Exynos4412开发板本着完全展现Exynos4412芯片功能,结合客户反馈与广泛调研,设计而成,其功能全面、接口丰富,完美展现了Samsung Exynos4412芯片的强大,主要面向企业用户进行产品开发过程中,对Exynos4412芯片的性能评估、设计参考使用。其丰富的外设接口及强大的性能,也成为高校、科研机构等单位的最佳科研设备;可为无线通讯、个人导航、摄像、移动游戏音乐视频、PDA、医疗器械、车载、广告机、手机等提供前期测试平台,无论从功能、性价比、调试飞线等方面,都可方便进行,大大缩短公司产品的研发周期。 UT-Exynos4412开发板堪称市面上最强大的ARM平台,采用Exynos4412的主芯片,具有更高的主频和更丰富外设,配置2GB DDR3的内存及8GB iNAND存储,具有稳定性强、可靠性高,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合。 UT-Exynos4412开发板可以选配有无线WIFI模块、Bluetooth、GPS、Camera、3G等模组,支持HDMI1.4(1080P/60Hz)显示,客户可以直接从开发平台中汲取完整的产品信息,甚至可以直接用于后续的产品开发中,完全不同于一般意义的开发平台。 UT-Exynos4412开发板最新的操作系统:Google Android4.0.4 ICS,提供平台完整的源码,支持WIFI、Bluetooth、GPS、Camera、HDMI、3G等选配模块。
以下是基于Exynos4412开发板的程序示例: ```c #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h> #include <stdint.h> #define RTC_BASE 0x10060000 #define RTC_SIZE 0x1000 #define GPD0_BASE 0x11400000 #define GPD0_SIZE 0x1000 volatile uint32_t *rtc_reg; volatile uint32_t *gpd0_reg; int main() { int fd = open("/dev/mem", O_RDWR | O_SYNC); if (fd == -1) { perror("open"); return -1; } rtc_reg = (uint32_t *) mmap(NULL, RTC_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, RTC_BASE); if (rtc_reg == MAP_FAILED) { perror("mmap"); close(fd); return -1; } gpd0_reg = (uint32_t *) mmap(NULL, GPD0_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPD0_BASE); if (gpd0_reg == MAP_FAILED) { perror("mmap"); close(fd); return -1; } // 设置RTC的时钟源为32KHz,使能RTC rtc_reg[0x40/4] = 1; // 设置定时时间为1分20秒 rtc_reg[0x50/4] = (80 << 8) | 1; // 等待定时器到期 while ((rtc_reg[0x54/4] & 0x1) == 0); // 发出蜂鸣器声音 gpd0_reg[0x0/4] |= 0x1; munmap((void *) rtc_reg, RTC_SIZE); munmap((void *) gpd0_reg, GPD0_SIZE); close(fd); return 0; } ``` 程序的主要流程如下: 1. 打开 `/dev/mem` 设备,以便进行内存映射; 2. 将 RTC 和 GPD0 的寄存器地址进行内存映射; 3. 设置 RTC 的时钟源为 32KHz,使能 RTC; 4. 设置定时时间为 1 分 20 秒; 5. 等待定时器到期; 6. 发出蜂鸣器声音; 7. 解除内存映射,关闭 `/dev/mem` 设备。 需要注意的是,由于本程序需要对系统的硬件资源进行访问和控制,因此需要以 root 权限运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值