基于龙芯 2K1000 的嵌入式 Linux 系统移植和驱动程序设计

news/2024/4/26 5:28:03/文章来源:https://blog.csdn.net/YEYUANGEN/article/details/129140347
2.1 需求分析
本课题以龙芯 2K1000 处理器为嵌入式系统的处理器,需要实现一个完成的嵌
入式软件系统,系统能够正常启动并可以稳定运行嵌入式 Linux。设计网络设备驱
动,可以实现板卡与其他网络设备之间的网络连接和文件传输。设计 PCIE 设备驱
动实现对处理器外接 PCIE 设备的配置和访问。
软件系统的引导程序、Linux 内核和根文件系统三部分可实现自身功能,组合
在一起能够使系统正常工作。系统的引导程序可以实现如设置网络设备 IP 等对设
备的基本操作,可以完成对 Linux 内核的引导。引导程序的编译方法应当正确,确
保源代码的更改可以生效。嵌入式 Linux 内核可以正常启动,实现进程调度、网络、
文件管理等功能子系统应有的功能。根文件系统需要实现对系统的初始化配置工
作和文件的管理。
处理器内部 GMAC 控制器外接 RTL8211E 网络物理层芯片组成网络系统,当
用户使用 Linux 网络相关操作命令,网络设备驱动需要提供相应的功能函数实现
对设备的打开关闭和设置 IP 等操作。网络设备驱动需要实现与其它网络设备之间
的连通和双向的数据传输。
PCIE 设备驱动需要完成对 CH368 FPGA 组成 PCIE 设备的探测和移除等操
作,同时设备驱动需要为上层应用程序提供必要的软件接口。驱动程序需提供对
PCIE 设备配置空间读写的方法,用于获取和更改设备的配置参数。驱动需要提供
对上层应用程序对设备文件操作的函数接口,当应用程序对设备文件操作时,驱动
中相应的功能函数被调用从而实现对设备 IO 空间的读写。
2.3 软件总体方案
2.3.1 引导程序方案
本课题需要对嵌入式 Linux 的启动流程进行分析,来明确引导程序在整个启
动流程中的作用。根据龙芯 2K1000 处理器来修改引导程序,并将引导程序移植到
存储设备中,从而使嵌入式 Linux 能够在龙芯 2K1000 处理器中正常运行。
嵌入式 Linux 系统的结构如图 2-2 所示,系统主要有四个部分,BootLoader
参数区、Linux 内核和文件系统。
1Bootloader 需要完成对内存和各种硬件设备完成初始化,完成分配资源等
任务,准备 Linux 内核运行所需的环境。之后检测到处理器的类型等信息,将必要
的参数信息传递给 Linux 内核,完成内核的引导工作。
2)参数区存放内核启动和运行必要的系统参数,第一部分的 Bootloader 获取
并设置必要参数后以原始数据的格式来存放。
3)内核镜像区为嵌入式 Linux 内核镜像,一般嵌入式系统由于存储资源有限,
一般使用压缩格式的内核文件。系统启动过程中,第一阶段的引导程序为内核运行
创造好条件之后,将内核镜像解压搬运到内存中运行。
4)文件系统区是压缩的文件系统,文件系统用来明确存储设备上各种文件组
织的方法,是嵌入式 Linux 系统中关键的一部分,文件系统被 Linux 内核解压挂载
之后才能工作[32]
常用的引导程序主要有 U-Boot PMONU-Boot 在功能上和 PMON 基本一
致,有常规的查看设备、设置网络等操作命令,同时有多种设备的驱动,目前 U
Boot 在嵌入式领域作为引导程序被广泛使用,使用规模远远大于 PMON,对各种
硬件平台的支持都比较完善。在以 ARM 处理器为核心的嵌入式开发中,U-Boot
引导程序的首选,因为 U-Boot 最初是从 ARMBoot 发展而来,经过多年发展和大
量开发者的贡献,U-Boot 对于 ARM 支持非常完善[33]

信迈提供龙芯软硬一体化方案及定制。

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

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

相关文章

重温一下C#的时间类型,并简单写一个定时器功能

🎉🎉 时间是一个非常抽象的概念,本篇文章我们不深究目前电脑上的时候是如何保持全网同步。主要是讲讲在使用C#编程语言里的时间类型。最后使用定时任务简单写一个提醒功能,比如:每天10点准时打开一次csdn首页&#xff…

yolov5源码解读--数据处理模块

yolov5源码解读--数据处理模块加载数据读取图片加载标签马赛克数据增强图片标签其他的数据增强变图像变标签__getitem__构建Batch加载数据 create_dataloader 跳转到datasets.py文件中,可以看到支持输入的文件类型非常丰富。。 回归正题 跳转LoadImagesAndLabel…

分析JEP 290机制的Java实现

简介 https://openjdk.org/jeps/290 Filter Incoming Serialization Data过滤传入的序列化数据 JEP290是Java官方提供的一套来防御反序列化的机制,其核心在于提供了一个ObjectInputFilter接口,通过设置filter对象,然后在反序列化&#xff…

c盘系统盘满了,无损扩容

磁盘管理 计算机-管理-磁盘管理 diskmgmt.msc1.选中c盘,右键选择扩展卷,如果是灰色,表示无法扩展 注意: 未分配区域不在同一磁盘,无法分配; 物理上不挨着的区域,无法分配; 2.把与c…

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建 文章目录【Spring Cloud Alibaba】003-Nacos 概述与单机搭建一、Nacos 概述0、新技术学习思路推荐1、什么是 Nacos2、架构图架构图架构图信息二、Nacos 单机搭建1、下载与启动下载地址编辑 startup.cmd 文件下面对两种模式的…

cocos2d-x4.0 win10环境搭建

cocos2d-x默认只支持win32的版本,win64的我测试link不行 我搭建使用的环境 windows10vs2019py2.7cmake3 从GitHub上clone源码https://github.com/cocos2d/cocos2d-x coco2d-x默认带了submodule,有协同子模块,最好是一起下载,搞个…

破解遗留系统快速重构的5步心法(附实例)

前两天和一个架构师朋友闲聊,说到了 「重构」 这个话题,他们公司早年间上线的项目系统,因一直没专人在演进过程中为代码质量负责,导致现在代码越来越混乱,逐渐堆积成“屎山”,目前的维护成本已远高于重新开…

ubuntu server系统树莓派安装mysql8.0开启远程访问

文章目录前言博客一、安装mysql8.0二、创建一个远程访问的新用户三、在MySQL配置文件中启用远程访问。四、navicat15连接mysql8.0返回10061chatgpt回复前言 百度了半天没解决,问了下chatgpt成功解决了…… 博客 一、安装mysql8.0 确认MySQL 8.0服务器已安装并正在…

恺望数据:解决智驾数据生产痛点,提供自动化生产线和规模化人力

最近Chat GPT引起了一个热点话题,就是人工智能是否真的可以替代人类工作,特别是在需要进行数据标注等需要人力的领域。 自动驾驶数据服务公司恺望数据在最近的一个会议上透露了一些消息,他们已经推出了一个基于自动化的数据生产系统&#xff…

uniapp 引入彩色symbol和 指令权限

uniapp 引入iconfont图标库彩色symbol 1,先去阿里巴巴矢量图标库登录 然后点击下载至本地 2.下载本地,然后解压文件夹 3.打开终端cmd命令窗口 npm安装全局包npm i -g iconfont-tools 4.终端切换到上面解压的文件夹里面,运行iconfont-too…

idea 中的 profiles 详解

profile 主要是为了解决不同环境所需的不同变量、配置等问题. profile 一般出现在两个地方:settings.xml,pom.xml 在 settings.xml 时,一般用来做仓库的选择(只使用 aliyun 仓库可以这样配置 settings.xml) 在 pom.xml 时,一般…

EM算法总结

目录 一。Jensen不等式:若f是凸函数 二。最大似然估计 三。二项分布的最大似然估计 四。进一步考察 1.按照MLE的过程分析 2.化简对数似然函数 3.参数估计的结论 4.符合直观想象 五。从直观理解猜测GMM的参数估计 1.问题:随机变量无法直接…

开发日记-lombok

开发日记-lombok环境问题解决方案:1 Data注解失效 无法正常生成 get和set方法2 RequiredArgsConstructor(onConstructor _(Lazy)) 符号_无法识别环境 idea2020.1lombok1.18.24jdk1.8 问题 Data注解失效 无法正常生成 get和set方法RequiredArgsConstructor(onCons…

C++——map和set的应用总结

目录1. 关联式容器2. 键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用3.2 multiset3.2.1 multiset的介绍3.2.2 multiset的使用3.3 map3.3.1 map的介绍3.3.2 map的使用operator[]3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用3.5 map和set在OJ中的…

大学计算机基础 知识点总结

一/ 计算机的发展、类型及其应用领域。 1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。 2. 第一台计算机:ENIAC,美国&#…

【TensorFlow 】查看Tensorflow和python对应版本、将现有的TensorFlow更新到指定的版本

1、查看Tensorflow和python对应版本 1.1这里我是在TensorFlow官方网址产看的 1、打开官方网址 https://pypi.org/project/tensorflow/1.1.0rc2/#files但是这个网址好像打不开,点击会出现这样 问题不大 输入Tensorflow然后点击搜索,就会跳转到https://p…

面试官:说说react的渲染过程

hello,这里是潇晨,大家在面试的过程中有没有遇到过一些和react相关的问题呢,比如面试官让你说说react渲染的过程,这到题目比较开放,也比较考验大家对react渲染原理以及源码的整体架构的理解。 整体流程: r…

Vue — 详解mixins混入使用

前言 当我们的项目越来越大,我们会发现组件之间可能存在很多相似的功能,你在一遍又一遍的复制粘贴相同的代码段(data,method,watch、mounted等),如果我们在每个组件中去重复定义这些属性和方法会…

DJI 无人机 Onboard SDK ROS 功能包demo运行

DJI 无人机 Onboard SDK ROS 功能包demo运行demo功能准备测试环境运行 dji sdk 节点运行 demo 节点自动飞行任务航点自动飞行兴趣点环绕自动飞行飞行控制本地坐标位置控制搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例 dji sdk 的节点…

接口服务熔断方案

一.熔断方式1.中间件支持熔断2.支持节点级熔断2.支持url前缀匹配二.配置1.延迟方式expression "LatencyAtQuantileMS(50.0) > 100"//50%延迟超过100ms2.失败率方式expression "NetworkErrorRatio() > 0.30" //失败率超过30%3.组合方式expression …