ARM裸机-4

news2024/9/23 15:22:06

1、什么是交叉编译

1.1、两种开发模式

        非嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给A(类)机运行。

        嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给B(类)机运行。

1.2、为什么使用交叉编译

        嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。

        交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)。

1.3、交叉编译特点

        必须使用专用的交叉编译工具链。

        由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。

2、CPU的设计原理、数据总线和地址总线

2.1、CPU和总线示意图

2.2、地址总线和数据总线

        总线分为数据总线、地址总线、命令总线。这里没有提及命令总线,是为了突出数据总线和地址总线,有需要可以自己去了解一下。

        CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。

        地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量。

        总线的速度决定CPU和外设互换信息的速度。

2.3、注意

        CPU的地址总线和数据总线的位数可以不同(典型代表就是51单片机),但是一般都相同。

        CPU的位数指的是数据总线的位数。

        32位(2exp32)CPU寻址的范围是4G,所以最多支持4G内存。

        数据总线是32位的,所以内存最好也是32位的。

3、为什么需要Jlink、SD卡等辅助设备

3.1、嵌入式开发特点

        交叉编译,不便于本机运行调试程序。

        嵌入式系统需要bootloader来启动,而bootloader必须首先存在于可启动介质中,这个过程需要专用工具。

        嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器。

3.2、Jlink的作用

        下载可执行程序到目标机。

        在目标机上实现单步调试,便于开发bootloader。

3.3、SD卡的作用

        作为启动介质。工作方式是:事先用读卡器将SD卡连接到开发机(一般是Windows电脑),通过写卡软件将交叉编译得到的可执行程序镜像烧录到SD卡,然后将SD卡插入嵌入式目标机卡槽,设置正确的启动方式启动,则系统可以从SD卡中烧录的镜像处启动。

3.4、USB转串口线的作用

        串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。

        因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口线来连接PC和开发板。

3.5、其它开发辅助工具

        USB OTG线

        DB9串口线

        交叉网线

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/811075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PWN · Stack Smash】[2021 鹤城杯]easyecho

花式栈溢出——Canary保护是吧?接化发,拿来吧你 目录 前言 一、代码分析 0.保护 1.main函数 2.sub_CF0()函数 (v9指向的函数) 二、Stack Smash过程 0.原理简述 1.条件与准备 2.地址泄露 ①真实地址泄露 ②flag地址泄露…

解决问题:python PermissionError: [WinError 5]拒绝访问

重要:关闭PyCharm Community Edition 2022.3等与python相关的编程程序找到按照python解释器的位置python->右键>属性>安全->点击组或用户名"中的Users->编辑点击"组或用户名"中的Users->把"完全控制"打钩->应用->…

【Java】使用JDBC操作MySQL(快速入门+详解)

文章目录 1. JDBC概述2. JDBC快速入门2.1 下载驱动jar包2.2 数据准备2.3 创建工程2.4 编写代码 3. JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行SQL对象3.2.1 管理事务 3.3 Statement3.3.1 执行DML语句3.3.2 执行DDL语句 3.4 ResultSet3.4.1 ResultSet对象方法3…

ChatGPT 实现前一天

提出需求 个人输入需求: Java实现键盘输入日期 输出前一天,需要考虑润年和非润年,2月是否有29号,大月小月的区分等细节处理,不符合的有对应提示,不使用java包里的封装好的类 ChatGPT4分析出的语义&#xff…

人工智能安全-2-非平衡数据处理

0 提纲 现象与原因非平衡数据处理方法概览数据预处理层面特征层算法层面1 现象与原因 非平衡数据分类问题:在网络信息安全问题中,诸如恶意软件检测、SQL注入、不良信息检测等许多问题都可以归结为机器学习分类问题。这类机器学习应用问题中,普遍存在非平衡数据的现象。 产…

哈希函数如何工作 ?

动动发财的小手,点个赞吧! 作为一名程序员,您每天都会使用哈希函数。它们在数据库中用于优化查询,在数据结构中用于使速度更快,在安全性中用于保证数据安全。几乎每次与技术的交互都会以某种方式涉及哈希函数。 哈希函…

生命在于学习——APP渗透学习笔记

一、app渗透篇 1、Android 简介 自从 Android 被谷歌收购(2005 年),谷歌已经完成了整个开发,在过去的 9 年里,尤其是在安全方面,有很多变化。 现在,它是世界上最广泛使用的智能手机平台&#…

代码、低代码、无代码开发触手可及的低代码平台源码

基于moleculer微服务架构开发的低代码平台源码,代码、低代码、无代码开发触手可及。 一、低代码平台系统功能 【公司信息】 管理员可通过页面顶部设置菜单或者应用程序中设置应用进入到后台设置页面。 在公司信息页面可进行基础信息修改,启用用户自助…

我在CSDN创作的第五十天

这篇文章主要是写给自己的,是对自己现在阶段的一个认识,6月10号,我在CSDN发布了第一篇文章,距离现在不多不少,刚刚好是50天,期间创作的都是C语言的一些内容,我创作的文章也都是我现在所学的知识…

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…

手机的python怎么运行文件,python在手机上怎么运行

大家好,小编来为大家解答以下问题,手机上的python怎么运行程序,手机的python怎么运行文件,今天让我们一起来看看吧! 1、python程序怎么在手机上运行 python语言应用很广泛,自己也很喜欢使用它,其…

自学网络安全(黑客)入门

自学网络安全入门可以按照以下步骤进行: 确定学习目标:网络安全是一个广泛的领域,包括密码学、网络防御、漏洞利用等方面。确定自己想要学习的具体方向,可以更好地规划学习路线。 学习基础知识:网络安全的基础知识包括…

Leetcode周赛 | 2023-7-30--我真是个废物

2023-7-30--我真是个废物 题1体会我的代码 题2体会我的代码 题3体会我的代码 题1 体会 根本没想到用双指针。原因是,没想到还要用一个字典去维护子数组中各个数字的出现频次,以及出现频次不小于1 (也就是大于0) 的数字个数。 这里的双重循环也很巧妙&am…

牛客 排座椅(贪心)

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。 同学们在教室中坐成了 M 行 N 列&…

【每日一题Day281】LC142链表 Ⅱ| 快慢指针 哈希表

环形链表 Ⅱ【LC142】 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…

用JavaScript和HTML实现聊天页面和功能(超详细)

文章目录 🚀一、介绍🚀二、开始编码🔎2.1 创建一个HTML文件🔎2.2 编写样式🔎2.3 完善聊天页面🔎2.4 编写按钮逻辑🔎2.5 测试聊天效果🔎2.6 优化对话显示🔎2.7 设置一个自…

Cesium地形裁剪

基于纹理映射实现的裁剪,反裁剪也可以。比判断点是否在多边形内裁剪性能要好的多,缺点是在边缘锯齿感会比较明显。 3DTileset 的裁剪也和这样一样用纹理映射实现了,效果一样

单链表的多语言表达:C++、Java、Python、Go、Rust

单链表 是一种链式数据结构,由一个头节点和一些指向下一个节点的指针组成。每个节点包含一个数据元素和指向下一个节点的指针。头节点没有数据,只用于表示链表的开始位置。 单链表的主要操作包括: 添加元素:在链表的头部添加新…

【指针二:穿越编程边界的超能力】

本章重点 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 9. 指针和数组面试题的解析 五、函数指针 首先看一段代码: 输出的是两个地址相同,这两个相同的地址都是 test 函数的地址。 那我们的函数的地址要想保存起来,怎…

LeetCode63. 不同路径 II

63. 不同路径 II 文章目录 [63. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/)一、题目二、题解方法一:二维数组动态规划方法二:一维数组动态规划 一、题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “…