0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派裸机开发步骤

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2020-09-25 15:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

树莓派4裸机基础教程:环境搭建

1.文章目的

2.树莓派4B的硬件配置

3.第一个基础工程构建

3.1 环境准备

3.2 源代码下载

3.3 代码编译与程序下载

3.4 树莓派硬件链接

4.优化调试手段

4.1 修改sd卡文件中的config.txt文件

4.2 修改网络环境

4.3 修改代码的链接地址

5.小结

1.文章目的

树莓派4作为一款学习嵌入式arm开发的开发板,是非常不错的选择。嵌入式开发往往需要的不仅仅是理论知识,还需要动手操作,然后实际体验效果。由于目前开发板要么资料太少,要么板子太贵,或者可玩性太低,所以嵌入式的入门和深入一直都是非常困难的问题。我写树莓派4裸机基础教程、树莓派4驱动进阶、树莓派4的RTOS这一些列的文章,也是希望借此机会,和大家分享一下嵌入式开发过程的方方面面,也希望对学习嵌入式感兴趣的人在阅读完成这些文章中会有所收获。由于树莓派4的外设,相对于前代的树莓派2、树莓派3等标准许多,完全可以作为学习嵌入式,学习arm编程的不错选择。所谓万变不离其宗,学会树莓派4的嵌入式开发,以后做其他的芯片的底层开发时,也是可以借鉴这种思想的。

写这些东西的目的全凭自己的兴趣爱好,在工作之余培养自己的文档写作能力与专业技能,如果有涉及到不正确的观点和知识点的地方还请多多指教。

2.树莓派4B的硬件配置

树莓派4b的性能非常强,运行Android和win10也毫无压力。性能强大,但是价格却非常的低,是一款学习嵌入式开发、学习arm开发的非常不错的开发板。

1.5GHz 4核心64位 ARM Cortex-A72 CPU (~3×倍性能)

1GB/2GB/4GB LPDDR4 SDRAM 内存

全吞吐量千兆以太网

双频 802.11ac 无线网络

蓝牙 5.0

两个 USB 3.0 和两个 USB 2.0 接口

双显示器支持,分辨率高达 4K

VideoCore VI 显卡,支持 OpenGL ES 3.x

HEVC 视频 4Kp60 硬解码

完全兼容早期的树莓派产品

3.第一个基础工程构建

嵌入式代码编译开发一般是两种,一种是通过IDE进行编译、下载、调试。这种开发的方式比较简单,对环境配置的要求很低,只需要安装IDE需要的环境即可。这种开发方式在开发单片机、中低端性能的芯片比较常见。另外一种就是在命令行中输入相关的命令,需要自己手动的去写编译脚本。这种常见的就是在Linux的开发过程中。

树莓派程序的开发过程一般都没有IDE,都是直接用GCC,所以我在进行工程构建的时候,也会采用GCC在控制台输入的方式进行。工程构建就需要自己解决了。目前常用的自动化编译工具就是Makefile。由于当前的第一个项目的工程比较容易,所以当前可用采用Makefile进行项目工程的构建。

3.1 环境准备

在不同的平台上进行工程构建的时候,首先需要准备下面的环境:

1.arm交叉编译工具链

2.可用执行makefile的工具

交叉编译工具链arm-none-eabi-gcc-5.4.1可以在官网上进行下载,也可以到网盘中下载:

链接:https://pan.baidu.com/s/1ad3d-pl4YbpgYrxKg6mX9g

提取码:f3cm

上述网盘中的gcc只适用于windows,如果是其他的系统,请自行下载arm的交叉编译工具链。

如果要在windows上使用make命令,可以下载msys2,上面集成了make的环境。

然后将交叉编译工具链加入到系统的环境变量中,同时打开msys64文件夹,修改msys2_shell.cmd

双击msys2_shell.cmd,打开窗口,确保输入arm然后按下tab键可以看到如下的画面

这样系统环境就准备完成了。

3.2 源代码下载

源代码工程已经在GitHub存在了,相关源码可以在如下地址中找到:

https://github.com/bigmagic123/raspi4-bare-metal.git

在arm/1.compilation_environment中可以看到相关的文件列表。

文件名 说明
link.ld 链接文件
main.c 函数入口
Makefile 编译规则文件
start.S 初始化汇编代码
uart.c 串口相关的代码
uart.h 串口相关的头文件

该代码的功能是启动跳转到c代码去执行,然后串口输出hello world程序。

3.3 代码编译与程序下载

上面两个步骤完成之后,在MSYS可以进入到工程目录,输入make直接编译即可。

可以看到生成了kernel7.img固件。该固件可以放到板子上运行。

3.4 树莓派硬件链接

树莓派4需要准备一张空的SD卡、一个串口线输出信息、一条TYPEC线供电。

首先需要将工程目录的sd_boot下面的文件放到空的SD卡目录中。然后将编译好的kernel7.img放到SD卡中即可。

接着将串口线连接到树莓派上。

接着打开串口,给开发板上电,可以看到串口的输出信息:

Helloworld!

此时一个简单的裸机程序就执行起来了。

4.优化调试手段

上述过程已经搭建完成环境,并且可以看到串口输出信息了。但是由于每次编译固件后,需要将固件放到sd卡中去执行,这样操作比较的繁琐,不适合学习嵌入式开发。所以可以通过树莓派的uboot自动去tftp服务器中获取代码。具体的步骤如下:

4.1 修改sd卡文件中的config.txt文件

将config.txt中的文件改为如下:

enable_uart=1 arm_64bit=0 kernel_addr=0x8000 kernel=u-boot32.bin core_freq=250

其实就是将kernel=kernel7.img改为kernel=u-boot32.bin。直接启动uboot。

4.2 修改网络环境

如果要开发板从tftp服务器上获取代码,可以将开发板设置的与pc机服务器在同一网段内。将网线插上路由器,开发板可以通过dhcp获取ip地址。

U-Boot2020.07-rc1-g627e7ce(May112020-1954+0800) DRAM:1.1GiB RPI4ModelB(0xb03112) MMC:emmc2@7e340000:0,mmcnr@7e300000:1 LoadingEnvironmentfromFAT...OK In:serial Out:serial Err:serial Net: Warning:genet@7d580000MACaddressesdon'tmatch: AddressinDTisdc32c1:79 Addressinenvironmentisdc3222:50 eth0:genet@7d580000 Hitanykeytostopautoboot:0 U-Boot>

按照如下步骤进行:

1.插上网线到路由器

2.设置环境变量

setenvbootcmd"dhcp0x00200000192.168.12.137:kernel7.img;dcacheflush;go0x00200000" saveenv

需要注意的是192.168.12.137为自己的电脑的ip地址。

3.电脑开启TFTP服务器

注意:

如果是开发板直连电脑的网线,这样设置是无效的,因为pc机上一般不支持dhcp服务器。必须设置静态ip地址。

然后开发板也需要给定一个ip地址。可以设置一个环境如下:

setenvipaddr10.1.1.100 saveenv reset

其中10.1.1.100是开发板的ip地址,与服务器是在同一网段。

setenvbootcmd"tftp0x0020000010.1.1.88:kernel7.img;dcacheflush;go0x00200000" saveenv

4.3 修改代码的链接地址

由于uboot的启动地址与裸机代码的地址不应该在一个地方,uboot的启动地址为0x8000,而裸机代码的地址现改为0x200000。

将该地址进行设置即可。

重新编译代码,开发板上电即可。可以看到串口打印出如下的信息。

这样每次开发板上电后,都会从tftp服务器上去获取代码执行。如果此时给树莓派的供电线加上一个电源开关,这样这样就能够非常方便高效的调试代码了。

5.小结

本文主要介绍树莓派裸机开发的步骤。嵌入式开发过程中,环境搭建往往十分的重要,一个好的开发环境,一个高效的验证思路可以大大的节省开发时间。所以说,工欲善其事、必先利其器。想要学好嵌入式开发,学会利用各种工作,让自己的工作效率加倍十分的重要。通过上述的文章描述,嵌入式的前期的基本环境可以搭建好,同时也可以理解系统的启动过程。我觉得,万事开头难,只有迈出了第一步,其实写起代码也就没什么太大的难度了。

- END -

原文标题:树莓派4裸机基础教程:环境搭建

文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    122

    文章

    2078

    浏览量

    110473
  • 环境搭建
    +关注

    关注

    0

    文章

    60

    浏览量

    9463

原文标题:树莓派4裸机基础教程:环境搭建

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-14 17:45 1586次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    树莓屏幕怎么选?

    树莓很多人都用过,但用屏幕的倒不是很多。不少都是直接远程操作,或者直接接身边的显示设备了。但我觉得给开发板配一个屏幕还是很能提升使用体验的。这次我就介绍一下树莓
    的头像 发表于 08-08 14:59 1515次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>屏幕怎么选?

    树莓操作系统:版本、特性及设置完整指南!

    树莓操作系统是什么?树莓操作系统是由树莓基金会专为树莓
    的头像 发表于 07-28 18:26 1447次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>操作系统:版本、特性及设置完整指南!

    工业树莓的高光时刻!树莓工业级 HMI 列阵!

    上海晶珩作为树莓官方设计合作伙伴和代理商,基于树莓技术开发了一系列工业级人机界面(HMI)产品,广泛应用于工业自动化、楼宇控制、智能制造
    的头像 发表于 07-23 18:36 846次阅读
    工业<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的高光时刻!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>工业级 HMI 列阵!

    树莓更新:确保系统安全且优化的关键步骤

    平稳可靠地运行,最大限度地减少潜在问题。更新软件包列表使用“sudoaptupdate”命令更新软件包列表是维护树莓的关键步骤。此命令会从系统配置的软件源中刷新
    的头像 发表于 07-22 17:16 1115次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>更新:确保系统安全且优化的关键<b class='flag-5'>步骤</b>!

    树莓6 传闻:发布日期与规格!

    每当我想再为我的收藏增添一款树莓时,总会在是立即购买还是等待硬件更强大的下一代之间犹豫不决。但新树莓型号的发布往往容易被错过,尤其是在你的信息流被病毒式传播的猫咪视频占据时。因此,
    的头像 发表于 07-11 16:21 2326次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>6 传闻:发布日期与规格!

    树莓小技巧:无需键盘或显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器或家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看树莓
    的头像 发表于 06-26 15:41 1556次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需键盘或显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓分类器:用树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 1305次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    树莓“揪出”家里的耗电怪兽!

    在本应用中,我们将使用树莓设置一个CE电流监测器,并通过网页界面显示电路的电流读数。本项目使用的组件硬件组件树莓2ModelBx112通道20安培电流监测控制器x1项目背景介绍在本
    的头像 发表于 06-04 15:33 1546次阅读
    用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>“揪出”家里的耗电怪兽!

    树莓“吉尼斯世界记录”:将树莓的性能发挥到极致的项目!

    树莓是一款功能强大、体积小巧且高度可定制的设备,多年来,我们见证了它被应用于众多领域。无论是将其装入3D打印的经典游戏机外壳,还是简单地将它隐藏起来作为家庭文件服务器,我们都报道过在社区里用树莓
    的头像 发表于 05-22 16:53 1533次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:将<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×1树莓
    的头像 发表于 05-13 16:39 1107次阅读
    用 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!

    全网疯传!树莓GUI开发竟然可以这么轻量?

    嘿,各位树莓的发烧友们!今天我要和大家分享一个超酷的技巧——如何在没有桌面环境的情况下,在树莓派上开发GUI应用。想象一下,你的树莓
    的头像 发表于 04-05 09:36 2336次阅读
    全网疯传!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>GUI<b class='flag-5'>开发</b>竟然可以这么轻量?

    树莓GUI应用开发:从零到炫酷的魔法之旅!

    的GUI应用开发有多好玩、多实用!树莓+GUI:不只是“好看”那么简单!你可能已经知道,树莓是一款性价比超高的
    的头像 发表于 04-04 09:03 1135次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>GUI应用<b class='flag-5'>开发</b>:从零到炫酷的魔法之旅!

    树莓+Balena OS:一键解锁智能硬件新技能!

    树莓,这个小巧的单板计算机,一直以来都是技术爱好者和开发者的宠儿。但你有没有想过,如何让树莓变得更智能?BalenaOS作为一款专为
    的头像 发表于 03-25 09:25 1796次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>+Balena OS:一键解锁智能硬件新技能!

    【第一弹】树莓开发者必看!Ubuntu Snap焕新升级:跨平台开发从未如此简单!

    导语:当树莓遇上UbuntuSnap,会发生什么?无论是用树莓搭建智能家居中枢,还是开发物联网边缘设备,依赖管理和跨平台兼容性始终是
    的头像 发表于 03-25 09:19 848次阅读
    【第一弹】<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>开发</b>者必看!Ubuntu Snap焕新升级:跨平台<b class='flag-5'>开发</b>从未如此简单!