自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

haiyonghao的博客

keep quiet. Keep patinent.

  • 博客(38)
  • 资源 (5)
  • 收藏
  • 关注

原创 Ubuntu下使用bximage+dd制作可供bochs使用的硬盘镜像

Ubuntu下使用bximage+dd制作可供bochs使用的硬盘镜像最近在看《x86_x64体系探索及编程》,在制作可供bochs使用的硬盘镜像时出了一些问题,主要有以下几个:步骤如书中所说,做了: 使用bximage生成了硬盘镜像 对bochs的配置文件进行了配置 利用dd工具将uboot, setup, lib16二进制文件导入到hello.img中,使用的命令为:...

2020-11-19 10:33:19 980

翻译 从0创建一个OS(十三) C源程序的编译和链接

本节讲学习如何编译和链接C源程序,以及查看最终文件与汇编代码的异同.关键字:C语言; 目标代码;链接器;反汇编目标:学习使用C语言编写与汇编语言功能相同的代码在上一节中我们创建了平台无关的编译器,本节我们将使用该编译器的一些功能来编译、链接C源程序.本节没有什么理论知识,主要是熟悉编译器的一些功能.编译首先我们写一个C语言函数,function.c,指示返回int型的0xBABA....

2020-11-19 10:32:34 364

翻译 从0创建一个OS (十二) 创建gcc交叉编译器

本节将学习如何为特定目标平台创建专属编译器关键字: 交叉编译器目标: 创建一个可以用来建立我们的kernel的开发环境理论基础鉴于以后我们将使用C语言编辑我们的操作系统核,因此需要对开发环境进行新的布置,也就是创建一个交叉编译器.为什么要搞一个交叉编译器?事实上类Unix系统的编译环境已经足够完善,但其缺点是太完善了,我们在编译时不知道到底使用了什么样的库文件,因此我们需要创建一个...

2020-11-19 10:32:24 437 1

翻译 从0创建一个OS (十一) 进入32-bit模式

终于要进入32-bit模式了,本节将完整的学习从boot sector进入32bit模式的流程关键字: 中断; 流程目标:进入32-bit保护模式并且测试前两节中学习到的(GDT设置,VGA打印功能)保护模式知识.理论基础进入32-bit保护模式需要进行以下几个步骤:关闭所有中断(不响应所有中断)导入设计好的GDT将CPU控制寄存器CR0的bit0设置为1通过一个设计好的jm...

2020-11-19 10:32:14 237

翻译 从0创建一个OS (十) 32-bit模式下的GDT

本节将学习如何使用汇编完成一个32bit模式下的全局描述符表(GDT)关键字: GDT目标:用汇编实现GDT结构理论基础之前的实模式下,我们用的寻址方法就是段地址 << 4 + 偏移地址,但是随着计算机理论的发展,人们发现,如果不在各种地址段之间加上访问权限的限制,计算机数据的安全性难以保障,恶意软件可以通过访问大量地址获得存储在计算机上的,并不属于本软件的信息.因此人们...

2020-11-19 10:32:06 259

翻译 从0创建一个OS (九) 32-bit模式的打印字符串函数

学习如何在32-bit模式下不借助BIOS的0x10号中断打印字符串关键字:32-bit保护模式; VGA; 视频存储区域目标: 学会在32-bit保护模式下打印字符串理论基础32-bit保护模式32-bit保护模式设计的内容非常多,十篇博客也写不完,因此这里只对32-bit保护模式的要点做简单介绍: 1. 32-bit保护模式下可以使用32bit的寄存器和寻址模式2. 32-b...

2020-11-18 17:02:30 195

翻译 从0创建一个OS (八) 读取硬盘中的数据

本节将学习如何从硬盘中读取数据关键字: 硬盘; 柱面(cylinder);磁头(head);扇区(sector); 进位(carry bit)目标:利用boot sector从硬盘中读取数据(这一步的目地是为从硬盘中启动操作系统kernel做准备)理论基础本节的内容是自本系列博客开始以来最复杂的一节,希望读者在学习时尽量保持耐心,译者读这一节的原文和代码也花了一整天时间,希望大家Kee...

2020-11-18 17:02:19 330

翻译 从0创建一个OS (七) 汇编中的段

本节将学习16bit模式的段结构关键字:段目标:学习如何在16bit模式下寻址如果你对段已经很熟悉了,那么你可以跳过本节.理论基础在从0创建一个OS (四) 电脑存储的组织形式一节中我们利用org完成了对booot sector的全局基址定义,那是我们第一次在本系列博客中接触到段的概念.段寄存器中存储的为段地址,从第一代8086机问世以来,之后每一代计算机的基础段寄存器一直没有变化...

2020-11-18 17:02:07 213 3

翻译 从0创建一个OS (六) 汇编函数和控制结构

本节将学习汇编函数和循环结构,其中穿插着字符串打印、数字转字符知识.关键字: 控制结构; 函数调用; 字符串目标: 学习使用汇编语言编写循环结构、函数对于本节的循环结构和函数,读者应该在本系列博客的第一篇原文介绍+环境搭建中,提到的《汇编语言(第三版)》一书中学习到过,因此本节的目地也是复习相关知识,为我们能写出一个功能完备的boot sector做准备.理论基础字符串在汇编中定义...

2020-11-18 17:01:53 299 5

翻译 从0创建一个OS (五) boot sector中的栈

本节将学习16bit模式下,汇编语言中的栈的基本操作关键字:stack目标:学习如何使用栈理论基础在我们学习其它高级语言,如C++,Java时,肯定会接触到栈这个概念,在汇编中栈的基础操作只有2种,入栈和出栈.在16bit模式下栈底由16bit寄存器BP负责记录栈顶由16bit寄存器SP负责记录栈中的一个单元占2个字节栈底的2字节空间不参与存储任务入栈操作: 先使SP =...

2020-11-18 17:01:28 237

翻译 从0创建一个OS (四) 电脑存储的组织形式

本节将学习boot sector以及其所在内存的相关知识关键字:memory offsets; pointers目标:学习电脑存储的组织形式在进行学习之前,先看一下这幅图这幅图为16bit实模式下电脑启动后的内存存储结构,读者请尤其注意粉色椭圆勾选的区域.实验一我们想要通过boot_sector的代码将大写字母"X"打印在屏幕上,为此设计了一组实验,实验设计见源码.源码; =...

2020-11-18 17:01:10 241

翻译 从0创建一个OS (三) 在boot sector中打印信息

本节将学习如何向boot sector中添加打印信息功能关键字: interrupts, CPU registers目标:向我们在上一节中创建的"裸骨架"添加功能——打印信息上一节的源码部分有一个死循环,用以控制程序始终运行在boot sector中,本节将向上一节的源码中添加打印信息到屏幕功能.理论基础我们将打印的信息为一个字符串,“HELLO”,可是打印功能如何实现呢?我们使用0...

2020-11-18 17:00:27 247

翻译 从0创建一个OS (二) boot_sector的“裸骨架“

本节将学习如何使用创建一个能够boot的文件关键字: assembler; BIOS目标: 创建一个文件,使BIOS能够将其当作能够boot的硬盘理论基础当PC启动时,BIOS并不知道如何启动操作系统,所以BIOS将启动操作系统的任务委派给boot sector,因此boot sector必须放置到一个大家都知道的地方,人们约定,这个地方,应该在硬盘的第一个存储空间中(cylinder...

2020-11-18 17:00:01 334

翻译 从0创建一个OS (一) 原文介绍 + 环境搭建

OS教程——从Scratch创建一个OS本文为os-tutorial—How to create an OS from scratch!的中文翻译版,旨在为国内OS社区初学者提供入门OS编写教程,文中提供了每一步的解释说明,使读者能够顺着清晰的思路完成一个OS,学习OS编写过程中的各项知识。本文的读者需要具备以下知识: 汇编语言基础 操作系统基础概念针对以上两条推荐两本书,不具备以上...

2020-11-18 16:59:30 735

原创 modprobe: ERROR: could not insert ‘kvm‘: Exec format error

在5.3.0-45-generic内核上,使用5.3.0的源码编译kvm,在modprobe kvm时,出现了错误:modprobe: ERROR: could not insert ‘kvm’: Exec format error使用dmesg发现以下log:kvm: version magic '5.3.0 SMP mod_unload ’ should be '5.3.0-45-...

2020-11-18 16:58:38 5654

原创 TMS320C6678 DSP单双网口切换 + 千兆/百兆网速切换

关于网络模块的配置在ti论坛有很多讨论,但是问题很多很杂,很难从里面获取有效信息,我根据调板经验将关于本文主题的内容整理出来,供大家讨论参考,希望我在这上面浪费的时间能为大家节省时间。如何使helloworld_evmc6678l工程支持双网口(或支持port 0)由于pdk6678_1_1_2_x中默认的网络驱动是关于port1的配置,要使程序同时支持两个网口(或支持port0),可以...

2019-05-14 14:34:00 4317 3

原创 TMS320C6678DSP SRIO通道和频率设置

基于很多朋友问DSP的SRIO具体通道怎样配置为1X,2X,4X,并且怎样设置相应速率的情况,本文给出几个实际配置例子,大家可以根据相应例子对照自身需求进行修改,基础例程仍旧是我之前在SRIO系列博客中提到的srio_loopback.c。6678 参考时钟是250M时,怎样将SRIO配置为4X,3.125G详细参数:参考时钟:250M相关寄存器:PRESCALAR_SRV_CLK(0...

2019-05-14 14:24:22 5098 2

原创 DSP6678 NDK网络配置(UDP)要点

最近找工作告一段落,又有了一些零碎时间,想起来博客里之前还挖了6678千兆网配置的坑,但是网络配置程序我只是简单的使用了NDK demo 提供的UDP功能,所以就没办法详细写网络配置了,就写几个要点吧,大家如果在实际配置时遇到什么问题,可以在下面留言咱们互相交流解决。1、如果要使用NDK,那你所建立的ccs工程必须是跑sys/bios的工程。2、如果想看6678的网络demo,那么其dem...

2018-12-04 15:46:14 6289 2

原创 C66x指令集(一)——指令集架构初探索

最近面试的时候被问到指令集,一头雾水,由于之前的工作没有涉及到指令集方面的知识,现总结成文。定义指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系,是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构包含一系列的opcode即操作码(机器语言)...

2018-09-22 14:54:41 1579

原创 无法定位程序输入点 _ZNSt15_exception_ptr13exception_ptrC1ERKS0_于动态链接库libstdc++-6.dll上

QT安装好之后测试helloworld,在QT creater界面可以运行程序,如下图:但是运行工程目录D:\QT_workspace\build-helloworld-Desktop_Qt_5_10_1_MinGW_32bit-Debug\debug路径下的helloworld.exe时,出现以下情况:查阅相关资料,发现应该是之前安装过其它版本的MINGW,且该版本的MINGW在...

2018-06-06 14:22:47 2337

原创 python3.6环境下: ModuleNotFoundError: No module named 'pycocotools.coco'

linux友好性令人发指! source activate tensorflow sudo pip3 install cython (没有pip3就sudo apt install pip3) sudo git clone https://github.com/cocodataset/cocoapi.git cd cocoapi/PythonAPI 修改Makef...

2018-05-27 21:19:56 15567 2

原创 keras无法在Anaconda环境(tensorflow)的ipython中正常import问题

该问题处理之前的状态:环境:Ubuntu16.04 + Anaconda + tensorflow1.6(使用python3.6)状态展示 在ipython中执行完import keras之后,出现“no moudle named keras”处理方法1、安装ipykernel conda install ipykernel2、找到ipython的启...

2018-05-27 17:56:39 3055

原创 FPGA+DSP SRIO通信(四)——中断系统(二)

“It doesn’t matter where you are, you are nowhere compared to where you can go.” 经过上一篇博客FPGA+DSP SRIO通信(四)——中断系统(一)的学习,我们已经可以将FPGA端产生的doorbell中断变成INTDST,也就是系统中断,接下来要做的就是使系统中断和主机中断**相互关联起来,再将主机中断和...

2018-05-22 23:01:06 6138 8

原创 FPGA+DSP SRIO通信(四)——中断系统(一)

这学期一直在忙项目的事情,没什么时间写博客,最近过年闲下来,会把之前欠的内容补上。 目录1、6678的中断系统1.1、系统事件1.2、SRIO中断和系统事件有何关系?怎样将这两者联系映射起来?1.3、doorbell_info bit到系统事件的映射(本文的基础是FPGA能向DSP发送doorbell类型的包。)从上一节FPGA+DSP SRIO通...

2018-02-05 15:26:33 8776 2

转载 cache一致性入门级解答

本文是RAD Game Tools程序员Fabian “ryg” Giesen在其博客上发表的《Cache coherency primer》一文的翻译,经作者许可分享至InfoQ中文站。该系列共有两篇,本文系第一篇。

2017-09-19 11:22:39 2341

原创 FPGA+DSP SRIO通信(三)——基于LSU的数据传输

之前的配置中我们知道如何配置通道速率、设置deviceID。 也就是马路已经铺设好了,我们应该造车了。 搏一搏,单车变摩托! SRIO不是单车,而是摩托车,我们需要搏一搏,把这个摩托车造出来,在我们已经铺设好的高速路上飞驰。目录一、LSU寄存器基本介绍二、LSU传输流程三、LSU方式_发送代码的实现下面提及的关于LSU寄存器的详细知识,在我的以下两篇博客中...

2017-05-15 22:29:48 11679 19

原创 FPGA+DSP SRIO通信(二)——DSP端参数设置(DEVICEID)

FPGA+DSP SRIO通信(二)——DSP端参数设置(DEVICEID)上回书说到,我们已经配置好了FPGA和DSP通信的通道速率,但是在调试时总是不知道怎样设置deviceID,本节就来说说,DSP端的deviceID怎么配置。首先附上官方给出的基于CSL的SRIO配置程序,该程序和上一章所用到的程序是同一个。device_srio_loopback.c对于DEVICEID的设置:1、DEVI

2017-05-03 20:19:39 8503 6

原创 FPGA+DSP SRIO通信(一)——DSP端参数设置(通道)

经过漫长的探索之后,博主发现关于TI的板子调试和开发要遵循的规律,称其为潜规则也不为过。 1、文档 文档是程序的基础,是思想和灵魂,所以文档的阅读必须认真,但由于所有的TI文档都是英文,非英语母语者读起来非常不通畅。我说说我的方法:使用谷歌翻译。不是硬着头皮逐句看,看不懂了再翻译,这非常耗费时间,往往看了后面忘了前面。我给出的方法是大段翻译,直接粘贴到谷歌翻译中,在遇到晦涩的部分时再

2017-04-19 18:56:45 22606 18

转载 CSDN-markdown编辑器[留存]

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-04-19 18:49:48 314

原创 SRIO学习(七)——Direct I/O 操作(二)

Direct I/O 操作(二)【上回书说到,LSU的CC位能够表示正在进行的传输的状态。】中断和LSU释放LSU的CC位能够表示正在进行的传输的状态,自然也能显示出执行过程中的错误,而且一点出错,与这些错误有关的中断将迅速被上报给CPU。在上报处理阶段没有提交新的任务。错误上报给CPU后,LSU只有在以下几种情况下才会被释放:CPU对restart或者flush位进行写

2016-09-30 14:43:21 8691 2

原创 SRIO学习(六)——Direct I/O 操作(一)

Direct I/O 操作框架流程direct I/O(加载/存储)模块是所有传出的direct I/O packets(direct I/O 包)的来源。通过direct I/O包,Rapid I/O包包含了目标设备上数据的存储地址和读取地址。direct I/O 需要RapidIO源设备包含目标设备的本地存储器地址列表。一旦地址列表建立,RapidIO源控制器就利用这些数据来计算目标地址

2016-09-20 20:34:20 10862 1

原创 SRIO学习(五)——SerDes Macro(串行解串宏)

SerDes宏和其配置SRIO通过允许一个可扩展的非专有接口,为我们提供了许多好处。这个接口就是SerDes。通过使用SerDes宏,可以与外设交流,并且外设都可以扩充带宽。同一个外设可以用在V1.2版本的RapidIO 接口协议的四个频率下:1.25、2.5、3.125和5Gbps。这样就可以在整个系统中有一个协议就足够了,可以选择性地选取带宽。这种做法消除了使用用户自带协议的情况,减短

2016-09-18 19:37:24 7927 1

原创 SRIO学习(四)——SRIO管脚

SRIO Functional DescriptionSRIO管脚【SRIO管脚部分官方文档给的信息较少,只有一个表格,不过笔者会对表格里的描述进行详细解析】SRIO设备管脚是基于Current-Mode Logic (CML)【电流模式逻辑】的高速差分信号,传输和接收信号的缓存自身都包含有时钟恢复区域。参考时钟输入是不纳入SerDes宏的,参考时钟使用的是差分缓存输入的,

2016-09-10 14:08:59 7260 1

原创 SRIO学习(二)——SRIO结构

SRIO结构【写在前面:在学习SRIO后续知识时发现有很多概念很难理解,查资料发现我对SRIO构架那部分学习太过敷衍,特此用一篇博文来学习交流一下SRIO构架。】RapidIO层次构建SRIO模块由三层构建而成。逻辑层 确定终端处理传输的协议,包括包的格式。传输层 定义了在系统中正确路由信息包的寻址方案。物理层 包含设备级的接口信息,如电气特性、错误管理数据和基本的流量控制数据。传输层与逻辑层和物理

2016-09-06 21:51:05 34537 9

原创 SRIO学习(三)——SRIO包

SRIO Functional DescriptionSRIO包在讲SRIO包之前,有必要了解一下SRIO的构造层次。 SRIO分为三个层次,分别是逻辑层,传输层和物理层。逻辑层 确定终端处理传输的协议,包括包的格式。传输层 定义了在系统中正确路由信息包的寻址方案。物理层 包含设备级的接口信息,如电气特性、错误管理数据和基本的流量控制数据。传输层与逻辑层和物理层是上下

2016-09-06 21:39:22 16642 3

原创 SRIO学习(一)——外设数据流

SRIO Functional Description外设数据流外设数据流概念SRIO是一个外部驱动的从模块,但能够在dsp上扮演主模块的角色,意思就是他能够直接向dsp推送所需的数据而不需要产生中断或者通过DMA。这有一个好处就是减少来中断数量,减少来与只读中断的握手时间,并将EDMA释放给其他任务。SRIO确定数据包(packet)的有效载荷(payload)最高有256个字节,很多时候,数据的

2016-09-04 10:09:17 16968 8

原创 德州仪器中文论坛SRIO例程【KeyStone_SRIO】

昨天我在测试德州仪器中文论坛的SRIO例程的时候,发现其包含了一个CCSV4的workspace的信息,就是上图第三个包含路径,起先我以为只需将该路径改为CCSV5的workspace路径即可,但后来发现V5的workspace根本不存在一个叫SRIO_loopback_SC_LSU_Shannon的文件,百度这个名字也得不到结果,所以最终我认为这个例程有问题。如果大家想找SRIO的例

2016-08-31 09:25:59 4210 7

翻译 MAC地址和IP地址

设备的MAC地址是出厂就设定好的,每台设备的MAC地址都是全球唯一的。在OSI(Open System Interconnection,开放系统互连)7层网络协议(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link)。它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的M

2016-08-29 16:40:56 1257

template.img

带有MBR的硬盘镜像,1M大,能够用于测试自己写的os测试代码

2019-08-07

6678中断配置

6678中断配置官方中文文档,如果看不懂我的博客的话值得一看。

2018-05-22

6678中断配置例程

本程序讲述了如何配置6678中断系统,以及如何使用中断。

2018-05-22

TMS320C6678数据手册

TMS320C6678数据手册,在对6678的中断配置,时钟配置等方面具有指导意义。

2018-01-31

C66x SRIO调试例程

该C文件基于C66x系统,给出了SRIO的标准配置程序,开发人员可以适当修改该程序,以达到自己的编程目的。

2017-05-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除