从零开始ARM裸机开发之建立开发环境

从零开始ARM裸机开发之建立开发环境从零开始ARM裸机开发之建立开发环境                                   –参考朱有鹏ARM裸机课程1、前言:以前学过TQ2440的程序,在Ubuntu中建立的环境是不符合S5PV210需要的开发环境的这篇博文主要讲解一下建立一个简单的嵌入式开发环境需要什么?2、回

大家好,又见面了,我是你们的朋友全栈君。

从零开始ARM裸机开发之建立开发环境

                                                                     –参考朱有鹏ARM裸机课程


1、前言:以前学过TQ2440的程序,在Ubuntu中建立的环境是不符合S5PV210需要的开发环境的

这篇博文主要讲解一下建立一个简单的嵌入式开发环境需要什么?


2、回顾下檫除开发板INAND中UBOOT的方法:

(1)在Linux和安卓系统中,檫除UBOOT的方法,也就是说在进入安卓的跟文件系统中:

使用命令:

Busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek

(2)但是在还没有安卓系统的情况下面,我们怎么去檫除系统中

 help movi:
movi  init
movi  write  \fwbl1  uboot
movi  write  uboot   0x30000000

把我们地址中0x30000000开头的这一段的内容,写到我们UBOOT的地址的分区里面去。
我推测应该是全0。

开机以后得到SD checksum Error;
也就是我们破坏UBOOT的Bl1部分已经成功了。


SD卡启动和USB启动优虐势对比:
如果你的电脑本身支持USB启动下载而且不蓝屏,建议以后做实验用USB下载调式。



3、如果是一个原生的Ubuntu的操作系统的话,那么它是有gcc的,

但是它不是用来编译嵌入式操作系统的,我们编译开发板210需要交叉工具链

(因为我们是学习,我的建议是我们使用一个原生的操作系统,但是对于连Linux都没有使用过的人来说,最好还是使用

别人已经把需要的软件搭建好的Ubuntu)

(1)linux中装软件的特点
Linux中安装软件比WINDOW中复杂:有以下的几种方法:
1、在线安装,比如Ubuntu中使用apt-get install vim来安装vim软件。
解决一个Linux版本特别的混乱。

2、自己下载安装包来安装
WINDOW的版本是有限的,之间的兼容性是控制的很好的。
这种方式的缺陷,你不知道你下载的安装包和你的系统是否匹配。

3、最装逼的一种方式,源代码的安装。
它一种独有的源代码的安装方式。
如果这个软件不是很合你的意思,按照你想要的样子来安装。

4、我们安装交叉编译工具链(arm-linux-gcc)实际采用第二种安装方式


(2)统称为arm-linux-gcc
相当于一个绿色的软件

交叉工具链的安装
步奏1:打开虚拟机,在/usr/local/下创建/usr/local/arm文件夹
步奏2:先将安装包从WINDOWs中弄到Linux中去,可以使用共享文件夹
也可以使用Samba,也可以使用cuteftp。
步奏3:解压。tar -jxvf arm-2009.tar.bz2
到此相当于程序已经安装完毕,真正的应用程序安装在:
/usr/local/arm/arm-2009q3/bin


安装后的测试:(这里测试仅仅是在当前路径下面才能成功的)
到真正的应用程序的安装目录下(也就是/usr/local/arm/arm-2009q3/bin)
去执行arm-linux-gcc -v
执行方法是:./arm-none-linux-gnueabi-gcc -v
执行后可以得到一长串的输出 gcc version 4.4.1,即表示安装成功


(3)如果仅仅只是执行一次的话,

1、那么就是用一次在一个终端中执行命令:

export PATH=/usr/local/arm/arm-2009q3/bin:$PATH

为什么执行这条命令后面,就可以查到这个应用程序?因为环境变量相当于操作系统的

全局变量,所以可以在全路径范围查找到它需要的东西。


2、环境变量就是操作系统的全局变量:
每一个环境变量对操作系统来说都是唯一的。
名字和所代表的意义都是唯一的。
Linux系统可以有很多个环境变量,其中一部分是Linux系统自带的
还有一些是我们自己来扩充的。
我们这里涉及到的环境变量是PATH。
PATH这个环境变量是系统自带的,它的含义是系统在查找



3、有些时候我们需要一直使用这个gcc版本的应用程序,所以在每次都这样

操作就会显得十分的麻烦,我们需要直接修改全局变量:

原因是我们本次终端中的操作仅仅只是针对本终端,所以这个目录没有导出。
解决方案是:~/.bashrc中添加这样的一句话
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH

我们导出时是在当前目录下面的环境变量,在不同用户下环境变量是不一样的。



4、建立Windows和虚拟机Ubuntu共享文件夹
有以下的几种方式:
(1)tftp,samba,VMWareTools,大家可以根据自己的喜好选择一种使用。

(2)这里介绍一种通过VMWareTools建立共享文件夹的方法,这也是我最常用的方法。

首先选择VMWare软件菜单栏VM->Settings->Options->ShareFolders

(3)为了访问的方便,我们一般会为该共享文件夹建立一个符号链接,首先切换到root用户
我们做开发的时候一般都是在root下面的
进入root用户的根目录/root,并执行 
ln -s /mnt/hgfs/windowshare  /root/windowshare




























版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137914.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • rocketmq延迟队列原理_rocketmq延迟队列原理

    rocketmq延迟队列原理_rocketmq延迟队列原理在java的延迟队列中,无法支持集群的延迟。Redis可以做到对应的延迟功能,但是自己封装毕竟局限于业务。而且封装也需要耗费一定时间。今天我们就讲一个现有的延迟队列,不仅支持分布式服务,而且解耦业务代码,而且支持不同延迟时间的造好的轮子吧。~那就是RocketMQ延时队列。RocketMQ将延时队列的延时延时时间分为18个级别123456789101112131415161718分别对应下面的延迟时间,在使用时,直接传递level即可。mess

    2025年6月11日
    4
  • 浅谈mongodb,mysql的区别和具体应用场景[通俗易懂]

    浅谈mongodb,mysql的区别和具体应用场景

    2022年2月12日
    44
  • 手游市场数据分析_梦幻西游手游考古3进4

    手游市场数据分析_梦幻西游手游考古3进4“机”不离手是大多数人的生活状态,甚至有一个用手机形容真爱的段子:“在一起时不看手机,不在一起时秒回信息,就算现代人的真爱了。”随着手机在日常生活中地位的提升,手机游戏也逐渐成为年轻人日常生活不可或缺的一部分。 在7月31日的网易云创大会游戏论坛上,来自TalkingData华南区业务负责人黎丽华给大家带来了“透过数据看真相:手游市场趋势报告”的主题分享。通过一些鲜活的数据向大家展示了…

    2025年6月21日
    4
  • MultiSet_multilayered

    MultiSet_multilayeredGuava引进了JDK里没有的,但是非常有用的一些新的集合类型。所有这些新集合类型都能和JDK里的集合平滑集成。Guava集合非常精准地实现了JDK定义的接口。Guava中定义的新集合有:Multi

    2022年8月5日
    10
  • C语言中的strstr函数的用法「建议收藏」

    C语言中的strstr函数的用法「建议收藏」strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。PHP语言函数编辑strstr()函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回false。语法

    2022年6月25日
    44
  • 网站访问人数太多,怎么才能进入_网址挖掘

    网站访问人数太多,怎么才能进入_网址挖掘老规矩,先上代码:#coding=utf-8importosimportrequestsimporttimefromPILimportImagefromioimportBytesIOfromlxmlimportetree#先定义一个opener函数:defopen_mn_web(url):try:headers=…

    2025年7月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号