系统移植及相关介绍

一.系统移植

系统移植(System Porting)是将一个操作系统从一种硬件平台迁移到另一种硬件平台的过程。这个过程涉及将操作系统的内核和相关的软件组件调整和适配到新的硬件环境中。

1.嵌入式系统的特点

    三低:功耗低  成本低  体积小

    两高:可靠性高  安全性高

2.组成

通用嵌入式系统硬件一般由一下部分组成

    微控制器:cpu

    晶振:提供时钟

    内存(如:SRAM,SDRAM):运行程序

    存储器(如:ROM,FLASH,SD,微硬盘):存储程序

    其他外围设备接口:

    输入、输出接口:

3.嵌入式系统软件组成部分

    1)有os的软件组成

        APP

        kernel

        驱动层

        硬件层

    2)无os的软件组成

        APP

        驱动层

        硬件层

4.系统移植的内容

    1)搭建交叉编译环境

    2)bootloader的移植

        启动引导内核

    3)kernel的移植

    4)rootfs的制作

        根文件系统:根目录及目录下的文件叫rootfs

5.嵌入式Linux交叉开发环境硬件基本组成

    主机:PC  

    目标机:ARM开发板

    连接介质: 串口 网络  USB

二.网络配置

1.编辑 -> 虚拟网络编辑器 -> 桥接模式 -> 桥接至(有线网卡) -> 确定

2.虚拟机 -> 设置 -> 网络适配器 -> 自定义 -> 桥接模式 -> 确定

3.点击 网络图标 -> 有线设置 -> + -> mac地址 -> ipv4 -> 自动/手动 -> 确定

 三.tftp环境搭建

1.服务器【ubuntu】

    1) sudo apt-get install tftpd-hpa  //下载安装tftp服务器

    2) mkdir /home/hqyj/tftpboot  //创建tftp服务器的目录

    3) sudo vi /etc/default/tftpd-hpa //修改tftp服务器的配置文件

        TFTP_USERNAME="xxx"

        TFTP_DIRECTORY="/home/xxx/tftpboot"   #tftp服务器的目录路径

        TFTP_ADDRESS="0.0.0.0:69"

        TFTP_OPTIONS="-l -c -s"

    4) sudo service tftpd-hpa restart //启动tftp服务器

2.客户端【开发板】

    pri //查看环境参数

    set gatewayip 192.168.6.1 //网关ip

    set ipaddr 192.168.6.123  //板子ip

    set serverip 192.168.6.128 //服务器的ip(ubuntu)

    save //保存

【测试】服务器和客户端是否ping的通

    板子ping主机:ping 192.168.6.128  -> is alive 表示成功ping通

    板子通过tftp下载服务器的文件: chmod 777 xxx.bin

                              tftp 0x40008000 led.bin

                              go 0x40008000

【解决】is  not  alive ????

    1.查看网络配置

    2.sudo service tftpd-hpa restar

    3.网线没接

四.将已经做好的内核和rootfs系统运行起来看效果

【ubuntu端】

    1.将uImage/exynos4412-fs4412.dtb/ramdisk.img文件拷贝到tftp服务器的目录

    2.chmod 777 /home/xxx/tftpboot/*

【板子】

    tftp 0x41000000 uImage //下载内核

    tftp 0x42000000 exynos4412-fs4412.dtb //下载设备树

    tftp 0x43000000 ramdisk.img         //下载根文件系统

    bootm 0x41000000 0x43000000 0x42000000  //加载内核

【看效果】

    1.【ubuntu端】

        arm-linux-gcc hello.c

        cp a.out /home/hqyj/tftpboot

    2.【板子端】

        ifconfig eth0 192.168.6.123 //ip地址指定为板子的IP

        ping 192.168.6.128 //板子ping主机

        tftp -g -r a.out 192.168.6.128 //从服务器下载a.out文件

        chmod 777 a.out

        ./a.out

       

【板子端修改】

    set bootcmd tftp 0x41000000 uImage\;tftp 0x42000000 exynos4412-fs4412.dtb\;tftp 0x43000000 ramdisk.img\;bootm 0x41000000 0x43000000 0x42000000 //自启动命令

    set bootargs root=/dev/ram rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc  ip=192.168.6.123 rootwait //给内核传递参数

    save //保存

    boot //板子启动 类似断电上电

五.nfs环境搭建

1.nfs服务器【ubuntu】

    1)sudo apt-get install nfs-kernel-server //下载安装nfs服务器

    2)mkdir /home/xxx/nfs //创建nfs目录 然后将rootfs解压到nfs目录

                       解压命令      tar xvf rootfs.tar.gz

    3)sudo vi /etc/exports   //修改配置文件

        /home/xxx/nfs/rootfs *(rw,sync,no_root_squash) #指定rootfs的目录

    4)sudo service nfs-kernel-server restart //启动服务

2.nfs客户端【板子的系统】

    set bootcmd tftp 0x41000000 uImage\;tftp 0x42000000 exynos4412-fs4412.dtb\;bootm 0x41000000 - 0x42000000 //自启动命令

    set bootargs root=/dev/nfs nfsroot=192.168.6.128:/home/hqyj/nfs/rootfs,v3 rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.6.123//给内核传递参数

    save //保存

    boot //板子启动 类似断电上电

【看效果】板子通过nfs客户端访问服务器

    ubuntu:

        mkdir /home/hqyj/nfs/rootfs/hello.c

        arm-linux-gcc /home/hqyj/nfs/rootfs/hello.c

    板子:

        ./a.out //运行程序




 

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

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

相关文章

【蓝桥备赛】质因数个数——数论

题目链接 质因数个数 个人思路 根据算术基本定理,每个大于1的数都可以写成若干质数相乘的形式。因此,我们从小到大依次求出这个数可能存在的质因数。 参考代码 Java import java.util.Scanner;public class Main {public static void main(String[…

android 扫描某个包下的所有类

注意事项 如果在用Android Studio开发过程中,如果新增了类,扫描不到。只能把APP卸载了,才能扫描到。 可能是Instance Run 的影响。 后面研究一下这篇文章,看看能不能解决 Android 遍历Apk下的所有类文件 package com.trs.nmip.…

Goroutines 和 Channels

为了提高效率,有时需要两个函数一起运行。 f() // 程序会等到 f() 执行完才会执行下一步 go f() // 创建一个 goroutine 来调用 f() ,程序不等待,直接执行下一步1. 下述代码中主函数中的 goroutine 计算了第45个斐波那契数 package mainimport ("…

面试篇-大厂的面试流程和面试注意事项

以前找工作的时候,对于流程中的面试总是好奇流程走到哪一步了,这一轮面试有没有通过,后面不通过还有没有消息通知等问题。今天作为一个求职者和面试官的身份来主要讲一下大厂招聘,内部的面试过程以及流转的流程是什么样的以及该注…

高性能跨平台网络通信框架 HP-Socket v5.9.5

项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4478351216.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v5.9.5 更新 一、主要更新 问题修复:由于 v5.9.4 版本升级了 KCP 导致 UDP AR…

arcgis 线要素shp数据处理

回顾 上篇写了arcgis 点shp数据处理之少数点和批量点坐标如何生成点要素,这个可能在做一些设计及查询中需要做的第一步。那么今天将对如何点集转线、线要素编辑数据处理做一记录。 一、工具 arcToolbox工具箱、编辑器 二、操作方法 1.点集转线 还是用上篇处理成…

哪个牌子的洗地机质量好?值得入手的洗地机

在家庭清洁方面,洗地机绝不是被认为的智商税。实际上,洗地机是一种非常实用的清洁工具,其最大的优点在于能够高效地协助我们清理家居环境,不论是在何种场景下,都能有效提升卫生水平。然而,由于市场上存在众…

eNSP学习——理解ARP及Proxy ARP

目录 名词解释 实验内容 实验目的 实验步骤 实验拓扑 配置过程 基础配置 配置静态ARP 名词解释 ARP (Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。ARP表项可以分为动态和静态两种类型。   动态ARP是利用ARP广播报文,动态执行并自动进…

C# MapPath

MapPath() 方法在 ASP.NET Web 应用程序中用于将虚拟路径映射到物理文件系统的路径。它提供了一种方便的方式来获取服务器上文件或目录的实际物理路径。 使用 MapPath() 方法可以应用于多种情况,包括但不限于: 访问静态资源:通过将虚拟路径映…

20240123-其实投资也不难

前几天团队聚餐,和老板们有聊到投资这个话题,其中一个观点很有趣,说是:“我们的服务器用的都是阿里云的,然后阿里云有一个跟我们对接的工作人员,通过我们买机器的数量增长,觉得我们公司发展应该…

《WebKit 技术内幕》学习之七(4): 渲染基础

4 WebKit软件渲染技术 4.1 软件渲染过程 在很多情况下,也就是没有那些需要硬件加速内容的时候(包括但不限于CSS3 3D变形、CSS3 03D变换、WebGL和视频),WebKit可以使用软件渲染技术来完成页面的绘制工作(除非读者强行…

Kafka 生产者投递内存池源码刨铣

大体逻辑是这样的。。 初始化BufferPool的时候会指定BufferPool的大小 以及内存块(poolableSize)的大小。 在申请内存的时候如果申请的内存大小大于指定的内存块大小就会抛出异常,无法申请。 如果是等于poolableSize的话,就会判断free中是否有&#xff0…

图卷积网络(GCN)

本文主要分为两部分,第一部分介绍什么是GCN,第二部分将进行详细的数学推导。 一、什么是GCN 1、GCN 概述 本文讲的GCN 来源于论文:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS,这是在GCN领域最经典的论文…

TS 学习笔录 (一)

TS学习笔录 1、TS 数据类型有哪些?2、元组是什么?3、union(联合类型)& Literal(字面量类型)?4、any 和 unknown 的区别?5、Object 对象类型?6、type 、interface 、 class 之间…

1.23 力扣图论

841. 钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个房间,你可能会在里面找到一套不…

无刷电机学习-方波电调 电路篇

想要彻底的理解无刷电机的驱动,那必然少不了学习他的驱动电路和程序。这里用开源的AM32无刷电调(方波驱动)来作为学习无刷电机笔记。 https://github.com/AlkaMotors附上作者github地址 AM32_Hardware: 基于AT32MCU的AM32PCB另一位大佬开源…

niushop靶场漏洞查找-文件上传漏洞等(超详细)

实战漏洞-niushop 一.端口扫描 http://www.xxx.com/index.php?s/admin/login 这里查询到后面的url有且仅有一个,目测估计是后台 访问url 发现确实是后台 二、找漏洞 Sql注入漏洞1: 点击进去 修改id www.xxx.com/index.php?s/goods/goodslist&…

网络要素服务(WFS)详解

文章目录 1. 概述2. GetCapabilities3. DescribeFeatureType4. GetFeature4.1 Get访问方式4.2 Post访问方式 5. Transaction5.1 Insert5.2 Replace5.3 Update5.4 Delete 6 注意事项 1. 概述 前置文章: 地图服务器GeoServer的安装与配置 GeoServer发布地图服务&#…

C语言爬虫采集图书网站百万数据

最近需要查阅一些资料,只给到相关项目名称以及关键词,想通过图书文库找到对应书籍,那么怎么才能在百万数据库中找到自己需要的文献呢? 今天我依然用C语言写个爬虫程序,从百万数据库中查找到适合的文章,能节…

【GitHub项目推荐--Go语言学习指南】【转载】

Go语言学习指南是一份涵盖大部分 Golang 程序员所需要掌握的核心知识,拥有 Go语言教程、Go开源书籍、Go语言入门教程、Go语言学习路线。零基础学习 Go语言、Go编程,首选 GoGuide。 地址:https://github.com/coderit666/GoGuide