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

news/2024/4/25 21:57:01/文章来源: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 基本一 致,有常规的查看设备、设置网络等操作命令,同时有多种设备的驱动,目前 UBoot 在嵌入式领域作为引导程序被广泛使用,使用规模远远大于 PMON,对各种 硬件平台的支持都比较完善。在以 ARM 处理器为核心的嵌入式开发中,U-Boot 是 引导程序的首选,因为 U-Boot 最初是从 ARMBoot 发展而来,经过多年发展和大 量开发者的贡献,U-Boot 对于 ARM 支持非常完善[33]

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

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

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

相关文章

我的 System Verilog 学习记录(1)

引言 技多不压身,准备开始学一些 System Verilog 的东西,充实一下自己,这个专栏的博客就记录学习、找资源的一个过程,希望可以给后来者一些借鉴吧,IC找工作的都加把油! 本文是准备先简单介绍一下环境搭建…

洛谷P1125 [NOIP2008 提高组] 笨小猴 C语言/C++

[NOIP2008 提高组] 笨小猴 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设 maxn\…

JAVA集合之并发集合

从Java 5 开始,在java.util.concurrent 包下提供了大量支持高效并发访问的集合接口和实现类,如下图所示: 以CopyOnWrite开头的集合即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往容器添加,而…

直播预告 | 嵌入式BI如何将数据分析真正融入业务流程

在信息化高速发展的今天,数据成为企业最有价值的资产之一。而数据本身很难直接传递有价值的信息,只有通过对数据进行挖掘、分析,才能让数据真正成为生产力。 商业智能(BI)应运而生,可以帮助企业更好地从数…

Julia 交互式命令窗口

执行 julia 命令可以直接进入交互式命令窗口: $ julia __ _ _(_)_ | Documentation: https://docs.julialang.org(_) | (_) (_) |_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.| | | | | | |/ _ | || |…

nginx的介绍及源码安装

文章目录前言一、nginx介绍二、nginx应用场合三、nginx的源码安装过程1.下载源码包2.安装依赖性-安装nginx-创建软连接-启动服务-关闭服务3.创建nginx服务启动脚本4.本实验---纯代码过程前言 高可用:高可用(High availability,缩写为 HA),是指系统无中断地执行其功…

win7下安装postgreSQL教程

系统环境:Windows 7 旗舰版 64位操作系统 安装版本:postgresql-9.1.4-1-windows-x64 安装步骤: 1、下载系统对应的软件版本; 2、双击“postgresql-9.1.4-1-windows-x64.exe”打开安装窗口; 3、Welcome页,…

图解操作系统

硬件结构 CPU是如何执行程序的? 图灵机的工作方式 图灵机的基本思想:用机器来模拟人们用纸笔进行数学运算的过程,还定义了由计算机的那些部分组成,程序又是如何执行的。 图灵机的基本组成如下: 有一条「纸带」&am…

allure简介

allure介绍allure是一个轻量级,灵活的,支持多语言的测试报告工具多平台的,奢华的report框架可以为dev/qa提供详尽的测试报告、测试步骤、log也可以为管理层提供high level统计报告java语言开发的,支持pytest,javaScript,PHP等可以…

C语言——动态内存管理

目录0. 思维导图:1. 为什么存在动态内存分配2. 动态内存函数介绍2.1 malloc和free2.2 calloc2.3 realloc3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态内存开辟的空间越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部…

django+celery+ RabbitMQ自定义多个消息队列

关于django celery的使用网上有很多文章,本文就不多做更多的说明。 本文使用版本 python3.8.15 Django3.2.4 celery5.2.7celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery from kombu import Exchange, …

毕业后想从事软件测试,现在需要学习哪些内容呢

在你选择学习之前,要先考虑一下这个是不是你喜欢的发展方向,而不是只听别人推荐就直接做了选择先了解下软件测试是做什么的以及未来发展前景,最后才是如何自学 软件测试就是在测试这个软件是不是能够完全按照需求运行。软件测试岗再简单点说…

Windows启动docker客户端报错:Hardware assisted virtualization and enabled in the BIOS

报错内容 : 🌟1.在控制面板中点击 启用或关闭Windows功能🌟2.勾选如下复选框🌟3.Windows功能中没有Hyper-V复选框怎么办?(如果有请跳过此步骤)此时不同人的电脑还会出现没有Hyper-V选项的情况1.打开 Windows PowerShell,输入 sys…

如何效率搭建企业流程系统?试试低代码平台吧

编者按:本文介绍了一款可私有化部署的低代码平台,可用于搭建团队流程管理体系,并详细介绍了该平台可实现的流程管理功能。关键词:可视化设计,集成能力,流程审批,流程调试天翎是国内最早从事快速开发平台研发…

Hive内部表与外部表的区别具体说明

目录 1.在/opt/atguigu/目录下,新建两个txt文件 2.在hadoop的web端递归创建一个目录,存储这两个文件 3.查看web端的文件 一、内部表: 1.创建一个内部表,并指定内部表的存储位置 2.查看内部表,内部表中没有数据 …

2023.2 新方案 java代码混淆 java加密 字符串加密

Java字节码可以反编译,特别是创业公司,很好的项目很容易被别人破解反编译,造成很严重的损失,所以本混淆方案能很好的保护源码,而且在不断迭代,增强混淆效果,异常问题处理,达到保护项目的目的: 本次升级包括: 2023年02年19日 : ht-confusion-project-1.8…

PK体系下的教育场景—电子白板的应用

PK体系指基于国产飞腾(Phytium)CPU和麒麟(Kylin)操作系统的技术和产业体系,被誉为“中国架构”,目前基于PK体系的相关软硬件已经广泛用于党政、金融、电信等关基行业。教育信创在国家大战略布局下&#xff…

【技术分享】Web自动化之Selenium安装

Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作。但是手工执行的任务容易出现人为的错误,也比较费时间。因此,将这些任务自动化,就可以消除人为因素。Selenium 可以…

理解QPSK的实质-I右手正旋-Q左手负旋

正在学习5GNR PDCCH,用到QPSK。作一小结。 引言 我认为像我这样一个死民科,非主流非科班的通信人,理解QPSK的意义,甚至不比欧拉公式,或者是傅里叶变换小。 因为QPSK相较于BPSK,是真正第一次体现了调制的…

模拟默认密码自动生成-课后程序(JAVA基础案例教程-黑马程序员编著-第五章-课后作业)

【案例5-2】 模拟默认密码自动生成 【案例介绍】 1.任务描述 本例要求编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。在生成密码时,将用户名反转即为默认的密码。 2.运行结果 运行结…