嵌入式学习系列教程—《NanoPC-T3讲解》

2024-02-03 19:18

本文主要是介绍嵌入式学习系列教程—《NanoPC-T3讲解》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

亲爱的朋友们,我们邀请嘉糖给我们讲解嵌入式学习系列教程,连载更新,学习过程中,有任何疑问,欢迎大家关注微信公众号ickeybbs提问。

上一节我们已经了解过51单片机的基本概念,现在我们正式进入嵌入式开发学习。

首先,我们需要了解嵌入式的基本概念,了解基本概念之后,我会先从uboot讲起。以下教程均以三星的S5P6818 CPU为平台,友善之臂推出的NanoPC-T3为开发平台,从uboot、内核、以及文件系统分别讲解嵌入式学习的教程。本节除了介绍嵌入式的相关概念外,会讲解如何搭建开发环境。

嵌入式基本概念:

嵌入式系统(Embedded system),是一种“嵌入机械或电气系统内部、具有专属功能的计算机系统”,由于控制功能单一却重要,通常要求及时应对的实时计算性能。被嵌入的系统通常是包含硬件和机械部件的完整设备。现代嵌入式系统通常是基于微控制器(如含集成内存和/或外设接口的中央处理单元)的。

嵌入式处理器大概可分为两类。一类是普通微处理器:使用独立的集成电路存储器和外设。另一类是单片机:具有片上外设,降低了功耗、尺寸和成本。嵌入式系统的软件是为某种应用定制的,可以使用各种不同的基本CPU架构:既有范纽曼型架构也有不同程度的哈佛结构;既有RISC也有非精简指令集处理器;字长从4位到64位甚至更高,当然最典型的仍然是8/16位。

应用场景:

通用型处理器、专门进行某类计算的处理器、为手持应用订制设计的处理器等,都可能应用到嵌入式系统。常见的典型专用处理器有数字信号处理器。

嵌入式系统的物理形态包括便携设备如电子表和MP3播放器,大型固定装置如交通灯、工厂控制器,大型复杂系统如混合动力汽车、磁共振成像设备、航空电子设备等。它们的复杂度低至单片机,高至大型底盘或外壳内安装有多个部件、外设和网络。

外围设备:

嵌入式系统通过外设与外部通信:

·串行通信接口:RS-232、RS-422、RS-485等

·同步串行通信接口:I2C、SPI、ESSI等

·USB

·多媒体卡:SD卡、CF卡等

·网络:以太网、LonWorks等

·现场总线:CAN总线、LIN总线、PROFIBUS等

·定时器:PLL、捕获比较模块和时间处理单元

·分立IO:GPIO

·模拟-数字/数字-模拟转换(ADC/DAC)

·调试接口:JTAG、ISP、ICSP、BDM端口、BITP、DP9端口等

开发工具:

同典型的计算机程序员一样,嵌入式系统设计人员也使用编译器、连结器和调试器开发嵌入式系统软件。然而,他们也使用一些大多数程序员不熟悉的工具。

搭建开发环境:

这里介绍的的开发环境是Ubuntu14.04,建议用户在开发中使用经我们测试过的版本的系统,不建议使用虚拟机。(另外,官方要求Android5.1.2必须使用64位的Linux操作系统)。

1.1下载64位Ubuntu14.04镜像

1)镜像下载地址: http://releases.ubuntu.com/14.04/ ,可以用硬盘启动,也可以刻成光盘启动进入后找蓝色链接点击下载,如 ubuntu-14.04-desktop-i386.iso,64位CPU可以下载amd64的版本,其中的 desktop是桌面版,server是服务器版,torrent是BT下载;

2)其他下载地址: viewtopic.php?f=48&t=458096 3)制作一个用于安装Ubuntu系统的U盘,具体方法网上都有很多,可以参考网上的帖子。

1.2 安装Ubuntu14.04系统

如果你的PC机已经安装Windows8 或者 Windows8.1操作系统,建议装双系统。最少预留100GB的硬盘空间给Ubuntu14.04 ,同时RAM需要8GB以上。(编译Android5.1.1,需要时间为59分钟。使用的电脑配置为:CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz,RAM: 16G,硬盘:SSD)

安装交叉编译器:

Step1:下载交叉编译工具链 arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz 复制到Ubuntu14.04 某个目录下如 opt/,然后进入到该目录,执行解压命令:

#git clone https://github.com/friendlyarm/prebuilts.git #sudo mkdir -p /opt/FriendlyARM/toolchain #sudo tar xf prebuilts/gcc-x64/arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/

(注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。)

Step2:然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:

#export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH

#export GCC_COLORS=auto

执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:

. ~/.bashrc

Step3:这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:

arm-linux-gcc -v Using built-in specs. COLLECT_GCC=arm-linux-gcc COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/4.9.3/libexec/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/lto-wrapper Target: arm-cortexa9-linux-gnueabihf Configured with: /work/toolchain/build/src/gcc-4.9.3/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=arm-cortexa9-linux-gnueabihf --prefix=/opt/FriendlyARM/toolchain/4.9.3 --with-sysroot=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-languages=c,c++ --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3 --with-float=hard ... Thread model: posix gcc version 4.9.3 (ctng-1.21.0-229g-FA)

至此,我们已经把开发环境搭建好,下面,我们将会对烧写系统的脚本进行讲解。

S5P6818启动过程:

启动过程大概如下图:

嵌入式学习系列教程—《NanoPC-T3讲解》

1、系统上电;

2、系统上电后,会首先运行IROM里的代码;

3、加载2ndboot并运行之;

4、2ndboot会去加载uboot并运行,然后根据环境变量加载内核并运行;

嵌入式学习系列教程—《NanoPC-T3讲解》

NanoPC-T3烧写脚本sd-fuse_s5p6818注释:

以下是对sd-fuse_s5p6818.sh脚本的注释:

嵌入式学习系列教程—《NanoPC-T3讲解》


嵌入式学习系列教程—《NanoPC-T3讲解》


嵌入式学习系列教程—《NanoPC-T3讲解》


嵌入式学习系列教程—《NanoPC-T3讲解》

嵌入式学习系列教程—《NanoPC-T3讲解》

嵌入式学习系列教程—《NanoPC-T3讲解》

嵌入式学习系列教程—《NanoPC-T3讲解》

嵌入式学习系列教程—《NanoPC-T3讲解》

嵌入式学习系列教程—《NanoPC-T3讲解》

下一节的更新将会讲解mkimage.sh脚本的注释,请留意最新动态。

这篇关于嵌入式学习系列教程—《NanoPC-T3讲解》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675125

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss