专栏首页嵌入式iot树莓派4上使用uboot+tftp调试rt-thread程序

树莓派4上使用uboot+tftp调试rt-thread程序

1.文章说明

做嵌入式开发,往往一个高效而可靠的开发环境,对于开发者来说非常的重要。

因为嵌入式往往需要把程序放到板子上去运行,而再树莓派上做rt-thread开发调试的时候,通常有三种办法。

第一种:SD卡转移

这种办法就是替换SD卡镜像内的kernel文件,这种办法每次都要将SD卡拔出,然后从电脑中转移系统镜像到SD卡中。

第二种:用uboot+tftp

这种办法的有点就是直接通过网络方式进行下载,需要有网线插入,并且宿主机搭建一个tftp的服务器。

第三种:用uboot+串口ymodem

这种就是利用了uboot里面的ymodem的功能,只需要将固件通过串口加载到内存,然后指定内存的运行的起始地址。

下面我主要介绍第二种方式进行说明。

2.编译uboot程序

可以看我之前编译树莓派3编译uboot的文章。

接着,可以需要注意的是配置

ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make rpi_arm64_defconfig

配置完成后,接着输入make menuconfig。接着需要uboot开启dcache的命令。

这里的命令

接着添加dcache命令

选择

配置完成后,就可以进行编译了

ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make

编译完成后,会生成u-boot.bin程序。

3.启动uboot

因为uboot要放到SD卡目录下,所以先修改config.txt

enable_uart=1
arm_64bit=1
kernel=u-boot.bin

然后把编译好的固件放到SD卡中。

启动就可以看到效果了。

设置环境变量:

setenv bootcmd "dhcp 0x00200000 192.168.12.194:rtthread.bin;dcache flush;go 0x00200000"
saveenv

其中要设置自己的tftp服务器的IP地址。dcache flush就可以了。

最后重启系统就可以了。

每次更新了RTT固件,直接将编译好的固件放到TFTP服务器的文件夹中,接着上电重启树莓派即可。不用每次都对SD卡进行操作了。

4.编译rtt固件

这里需要注意的是将RTT的固件地址进行一定的偏移。

https://github.com/RT-Thread/rt-thread/tree/master/bsp/raspberry-pi/raspi4

接着设置link.lds文件。将起始地址改为0x200000

因为uboot的入口地址是0x80000,如果这里也是0x80000那就不行了。

所以这里改一下入口地址就可以了。

5.总结

再uboot中将固件转移到内存中,然后从内存中进行跳转的过程。需要注意的是将cache关闭掉。

因为目前uboot中已经开启了mmu,这会导致跳转过去的时候,cache没有关闭掉,会出现data abort。所以在跳转前需要关闭MMU。

对于树莓派的程序调试,采用uboot+tftp确实是一种加快调试手段的方法。

本文分享自微信公众号 - 嵌入式IoT(Embeded_IoT),作者:bigmagic

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 树莓派4可以不用SD卡启动?

    Raspberry Pi 4具有一个SPI连接的EEPROM(4MBits / 512KB),其中包含用于启动系统的代码,并替换了先前在SD卡的启动分区中找到的...

    bigmagic
  • 遇到树莓派4不能启动的问题了?

    树莓派4与之前树莓派相比,增加了eeprom启动的方式。所以当我们把制作好镜像的SD卡插上,发现没有反应,这个时候,就要去检查eeprom的数据是否已近被改掉了...

    bigmagic
  • 在window上搭建树莓派4b的RT-Thread开发环境

    因为前面树莓派rtt开发环境都是在Ubuntu上进行环境搭建,但是大部分人都是采用Ubuntu进行环境搭建。所以这里我也讲述一下树莓派4的RTT在windows...

    bigmagic
  • 网站漏洞修复方案防止SQL注入攻击漏洞

    SQL注入漏洞在网站漏洞里面属于高危漏洞,排列在前三,受影响范围较广,像asp、.net、PHP、java、等程序语言编写的代码,都存在着sql注入漏洞,那么如...

    网站安全专家
  • SQL Server2012新特性概述

    公司最近要升级数据库,SQL Server 2008R2-->2012。再开始升级之前先找了点资料分析一下2012的新特性和功能,提前预热一下。 2012中主要...

    用户1217611
  • Web网站服务(apache的权限设置)

    L宝宝聊IT
  • 微服务:如何拆分共享数据库?

    在分解单体应用程序到微服务体系架构时,重点考虑独立数据库拆分是很重要的。您需要想出一个可靠的策略,将您的数据库分割为多个与应用程序对齐的小型数据库。简而言之,您...

    程序你好
  • iOS APP版本构建版本无效

    GuangdongQi
  • 机器学习面试中常考的知识点和代码实现(一)

    本文是机器学习面试中常考的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识;既然是以面试为主要目的,亦不可以篇概全,请谅解,有问题可提出。

    AI研习社
  • LevelDB 完全解析(3):SSTable

    SSTable 全称 Sorted String Table,顾名思义,里面的 key-value 都是有序保存的。除了两个 MemTable,LevelDB ...

    linjinhe

扫码关注云+社区

领取腾讯云代金券