最近在学习riscv64架构的一些知识,并且利用做一些项目的机会去了解更多的不同种类的的芯片的架构设计。学习riscv的好处在于其架构是开源的,也就是任何人只要有兴趣和时间都可以利用开源的代码在fpga设计出一款自己的CPU出来,我觉得这是一个深入芯片底层设计的很好的机会。从上层到底层,从知其然到知其所以然,这必将是一个循序渐进的过程,本文梳理了一下riscv上的环境搭建方法(ubuntu18.04),让系统在qemu上正常的运行起来。
PetaLinux是Xilinx基于Yocto推出的Linux开发工具。Yocto是业界主流的Linux发行版的构建工具,它不仅可以从源代码编译Linux 内核,还可以编译Linux发行版必须的数以千计的的应用程序,功能非常强大。Yocto的出现,大幅度降低了构建嵌入式Linux发行版的难度。 万物总有两面性。虽然PetaLinux/Yocto可以一键编译出一个自定义的嵌入式Linux发行版,但是编译整个文件系统很耗费时间。完整的一次PetaLinux/Yocto编译,可能需要从网络下载上GB的文件,可能需要几个小时。即使只更改一行代码,也需要数分钟时间。PetaLinux/Yocto的编译流程,也和很多开发人员原来的基于make的工作方法不一样,它会分析文件系统里所有应用程序的配置文件,执行下载、配置、编译、打包等过程。 如果在调试单板时,仅仅改动一行代码,也需要执行这些操作,显得冗余,也影响开发效率。 为了适应开发人员的工作习惯,也为了提高速度,可以整合PetaLinux工程编译和OpenSource U-Boot/Linux编译。
本篇介绍如何编译及下载uboot到ARM板子上。对于初学者有这么三个名词,分别是uboot、kernel和rootfs。这三个名词我刚开始接触是非常的困惑,现在随着使用增多稍微有一点点感觉。大家刚开始学不用太纠结这个问题,等实际操作一段时间就会理解了。uboot的主要作用是用来启动linux内核,因为CPU不能直接从块设备(如NAND/EMMC/SD卡)中执行代码,需要把块设备中的程序复制到内存中,而复制之前还需要进行很多初始化工作,如时钟、串口等;要想让CPU启动linux内核,只能通过另外的程序,进行必要的初始化工作,再把linux内核中代码复制到内存中,并执行这块内存中的代码,即可启动linux内核;一般情况下,我们把linux镜像储存在块设备中如SD卡、Nandflash等块设备中,首先执行uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执行这个地址,即可启动内核。
主 机:VMWare–ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2
最近在看一些uboot相关的内容,有一些疑惑,但是暂时我又没有硬件板子,我就准备用QEMU模拟调试。
本系列教程以「i.MX6ULL」处理器的ARM开发板为实验基础,学习记录嵌入式Linux开发的各种知识与经验,主要内容包括嵌入式Linux移植,嵌入式Linux驱动开发,嵌入式Linux应用开发等。
嵌入式系统三大部分:bootloader(uboot)、Linux内核、根文件系统。
这次是写公众号以来最久一次没有更文了,主要是刚进新公司,要熟悉一下环境,而且由于开发项目催的紧,压力比较大,以至于下班时间比较晚;同时在交流群里面也比较少回答网友的问题,不过如果你私聊我,我还是会抽出时间来给你解答;现在终于适应了开发节奏,不会那么难了;同时在今天这篇文章里面申明一下,下次私聊我问问题的网友,不要称呼我大佬和大神哦(大佬和大神的称呼,自己的能力远远达不到),自己也是从啥都不懂,即使现在找到合理的岗位,每天也在努力学习(这里讲个笑话,这几天办理那个社保号的问题,一开始我不知道社保号就是电脑号,直到昨天问同事才知道。)学习是不会中断的,特别是干我们这一行的,正所谓活到老学到老,而且人一生不是来享受的,而是生来都要吃一点苦的,先苦后甜嘛。
Trusted Firmware-A(TF-A)是用于 Arm A-Profile 体系结构(Armv8-A 和 Armv7-A)的安全世界软件的参考实现,其中包括 Exception Level 3(EL3)安全监视器。它为在 AArch32 或 AArch64 执行状态下的安全世界启动和运行时固件产品化提供了一个合适的起点。
参考:《Hi3516CV500╱Hi3516DV300 SDK 安装及升级使用说明》 海思HI3516DV300 自学记录【1】:linux服务器SDK安装、nfs挂载
本文讲述了如何编译uboot并进行配置,对编译过程中遇到的问题进行解决,此外还对uboot的结构进行了简介
root@ubuntu:/home/hfl/hflsamb/uboot/u-boot-2010.09#vi boards.cfg
因为嵌入式往往需要把程序放到板子上去运行,而再树莓派上做rt-thread开发调试的时候,通常有三种办法。
在第三期项目的视频中,官方提供了一整套新的工具链,bootloader, 内核和文件系统(arm-linux-gcc_4.3.2, uboot-2012.04.01, linux-3.4.2)其中uboot-2012.04.01来源于毕业班,其下载烧写功能远不如uboot-1.1.6,因此我更偏向于使用老版的Uboot。但是第三期的工具链却无法直接编译uboot-1.1.6, 现在将解决这一问题。
上篇文章,我们介绍了如何使用NXP原厂的uboot进行编译和烧写,将uboot运行在自己的开发板上。NXP原厂的uboot,直接烧录到我的开发板中,LCD的驱动是不正常的,需要进行修改。本篇我们就来继续研究uboot,「使得uboot能匹配我们自己的开发板」。
本文主要介绍beaglebone的开发过程与启动方式。同时将一套嵌入式Linux开发环境搭建起来。以便于更好的掌握和理解beaglebone AI的使用。工欲善其事,必先利其器,搭建好完整的开发环境,后续的工作才能更好的开展起来。要想用好一款芯片,也需要很好的理解其启动方式。下面来实际的展示操作流程。
uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核
在这篇文章中,将会通过树莓派4的Linux的启动过程,描述如何进行嵌入式Linux系统开发的思路。通过树莓派4B的启动流程,看到一个Linux启动过程,同时,通过一步一步搭建一个完整的树莓派嵌入式Linux开发环境,来指导分析各部分的开发过程。
首先了解ARMer9开发系统硬件设计上和三星原装SMDK2410之间的区别。让uboot在ARMer9开发系统上跑起来,目前只需要关注如下的硬件区别,解决了下面这个问题,uboot就可以在ARMer9开发系统上正常地从串口输出,进入提示符。很多命令都可以使用,当然有些命令需要做修改。
该文章介绍了如何通过U-Boot在ARM平台上进行Linux内核的编译、烧写和启动。首先介绍了U-Boot的编译过程,然后说明了如何将编译好的U-Boot刷入NAND Flash并启动内核。文章还介绍了如何使用U-Boot的串口终端进行命令行交互,并总结了如何在U-Boot中编译Linux内核的步骤和注意事项。
通过使用本地文件、Open Source U-Boot/Linux编译,既能适应部分开发人员的工作习惯,也能提高U-Boot/Linux的编译速度。
编写目的:本文档作为Allwinner Tina Linux系统平台开发指南,旨在帮助软件开发工程师、技术支持工程师快速上手,熟悉Tina Linux系统的开发及调试流程。
本篇接上一篇,给大家介绍Linux Kernel的编译和下载运行,达到的预期效果是都下载到板子后,可以正常通过串口登录到Linux系统里。
嵌入式linux设备要进行软件升级有很种多方式方法,总的来说可以分为本地升级和远程升级。本地升级包括升级工具升级,存储介质升级等,远程升级是指通过网络进行程序升级。这里介绍一种同时支持本地和远程升级的方法,以供参考。
按照官网wiki,http://wiki.espressobin.net/tiki-index.php?page=Boot+ESPRESSObin+from+SATA+drive&highlight=
摘要:本文是根据自己亲手编译源码过程所总结的一个开发笔记(包括编译流程,可能遇到的错误,以及错误解决的办法等),首先介绍了基于Ubuntu9.10的编译环境的建立,再次介绍了整个源码的获取方式,最后讲解了源码的编译过程(包括源码的打包处理,u-boot的编译,Linux的kernel的编译,android文件系统的编译)。本文各个操作的开发环境是基于VMware7.10虚拟机的Ubuntu9.10环境。当然不同的版本的Linux可能操作过程有点差异,所遇到的错误可能不同,但是各个操作思想是一致的。
首先需要安装交叉编译工具链,可以用apt安装riscv64的gcc编译工具链。我是自己编译了一个musl-gcc,下载:
如果您之前编译过EV200的SDK,那么您会发现,编译DV300的过程很类似,软件包直接拷贝,无需重新下载,通常在1-2个小时内能搞定SDK的编译。 DV300的入门会简洁介绍,如果遇到编译错误,请你阅读EV200的编译过程和相应目录下的readme查询解决方法。
NXP 会从linux内核官网下载某个版本,然后将其移植到自己的 CPU上,测试成功后就会将其开放给NXP的CPU开发者。开发者下载 NXP 提供的 Linux 内核,然后将其移植到自己的产品上。
由于电子设备的普及,越来越多人拥有树莓派,不管是作为电子极客,还是作为普通普通人,很多人都会玩一下树莓派,可以学习一些c语言,也可以学习嵌入式。下面我来介绍一下如何在树莓派上运行rt-thread rtos。
编译器下载地址:Downloads | GNU-A Downloads – Arm Developer[1]
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
这周又一段时间没怎么写文章了,这周上班接触的东西有点多,每天都在接受挑战。维护公司移动app界面,设计到的技术是css、html、javascript。然后把写好的app程序通过threadx和Linux两个系统的支持(Linux内核版本是在3.10版本的,在安霸和海思平台);第一次搭建编译环境(这里跟平时学的环境有比较大的出路,作者被骂了好几次,终于是成功了,呜呜。。。),然后实时在PC或者手机端采集实时视频监控。后期会不断学习和分享自己在工作当中的一些经验给大家,希望对大家有帮助。今天开始写Uboot的文章和Linux驱动的文章。之前Linux应用的文章全部在公众号后台有。以上学习过程中,作者是学习朱有鹏老师的嵌入式课程。
前进几篇文章,已经搞定了Linux移植三巨头:uboot、kernel(包含dtb)和rootfs,除了uboot是烧写在SD中的,其它的都是在ubuntu虚拟机的nfs服务器中,运行时必须通过网络将这些文件加载到开发板的内存中运行。
–参考朱有鹏ARM裸机课程
启动速度是嵌入式产品一个重要的性能指标,更快的启动速度会让客户有更好的使用体验,在某
最近有一些riscv的项目做,虽然以前也用过例如k210之类的riscv架构的芯片,但是都止于能够做一些应用,并未特别关注其芯片的体系架构方面的东西,但是随着接触的芯片架构的种类的逐渐的增加,发现要想使用一款好芯片的,仅仅做上层应用并不能完全发挥出特定架构芯片的全部优势。比如aarch64的el层级和虚拟化的模型,mips的mmu特性,以及sparc的窗口寄存器等等,芯片架构的特点要是能够完全的发挥出来,写起应用起来,那真是觉得很爽的事情。
进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令,如下图所示:
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。
最近想研究一下树莓派3b的一些底层驱动的代码,比较好的就是直接可以看树莓派3b的实现。因为usb驱动,网卡驱动,以及lcd驱动,都可以在uboot中直接找到。有了这些东西,对于我们直接写树莓派3b的驱动程序,提供了极大的帮助,所以现在先在树莓派3b上编译运行起来uboot。
编译后在 Buildroot 目录 output/rockchip芯片型号recovery/images 生成 recovery.img。 需要特别注意 recovery.img 是包含 kernel.img,所以每次 Kernel 更改,Recovery 是需要重新打包生成 例如:
本篇的重点是讲解设备和驱动的启动流程,设备和驱动的流程是整个内核启动的核心,也是工作中最常面对的问题。出于知识点的系统性考虑,在进入主题之前我们先看下整个 Linux 在 ARM 中的启动流程如何。
1. 建立Uboot的SI工程 1.1首先给uboot打上补丁,然后来生成压缩文件
在PetaLinux工程中,与单板相关的UBoot、Linux等模块,经常需要编辑、调试。
如上图,问题都是出在fs/yaffs2/下,很多error都讲述:调用的成员名,在struct mtd_info结构体里没有定义.
rootfs翻译过来就是根文件系统。顾名思义,它属于文件系统范畴,文件系统的作用就是用来管理、储存文件的。文件的概念对于linux来说很重要,不是有一句话叫”一切皆文件“,Linux的一切行为与操作都反映在文件上。 上文我们编译的linux源码提供的是操作系统的“灵魂”(管理和调度逻辑),但还是需要“肉身”(文件系统)来落地实现。所以,你只是编译烧录kernel,是无法正常启动的,还需要再给它搭配一个文件系统。
整个嵌入式系统的加载启动任务完全交给Bootloader完成,它的主要任务是将内核映象从硬盘读到RAM中,然后跳转到内核入口启动内核(操作系统)!通俗来讲,Bootloader的作用就是初始化硬件,启动操作系统。
RK SDK中的img镜像都是gpt格式的,分区又很多,为了看起来直观,方便管理,只用三个分区就够了,uboot、kernel、rootfs。这里记录下linux和windows下两种打包img方式。
领取专属 10元无门槛券
手把手带您无忧上云