自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

No detail can be too detailed

思则变 变则通 通则达

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

原创 linux0.12之内存管理(1)-整体框架思路

内存管理一直是本人比较佩服linus的地方。为此先看linux0.11版本,又看了0.12版本,基本思路一样,差异性会单独列出来。 本篇博客只是梳理一下大体思路,具体函数分析,放在后面的博客。一、 从实模式到保护模式谈起 1、简单讲实模式,是16位寻址的访问方式,保护模式是32位的访问方式。在linux0.12的启动代码中bootsect和setup是工作在实模式下,之后的所有代码都运行在保护

2015-06-29 21:45:24 522

原创 关于校验算法的学习(学习以太网时遇到的)

关于校验算法的学习(学习以太网时遇到的)以太网的包头还是数据都会有校验,在FPGA上实现IP核时,用的是CRC校验,然后学习ICMP协议时,也看到一种校验算法,以此学习分析一下背后原理。一、先看看ICMP的包格式,主要是写ping命令是用到(会有一篇专门将ping的c语言实现),所以只是展示与ping命令背后的ICMP规则。 (来自维基) 对于校验的研究暂时不需要理解其他数据的意思,

2015-06-25 12:21:23 4940

原创 linux 0.12之head.s跳转到main.c的说明

因为只有引导代码中使用了as86的编译器,linux0.12其他汇编都是基于GNU as汇编的,这是背景。 head.s是在gnu as下编译的,使用的是AT&T汇编模式。主要完成一些GDT的初始化,然后跳转到main.c函数执行,这两者如何顺利调用的,今天研究一下。 下面是linus给出的关键源码:after_page_tables: pushl $0 # These are the p

2015-06-23 20:11:29 1170

原创 linux0.12之main.c的工作流程分析

之前分析了head.s到main.c的跳转,下面看看mian.c的工作流程分析。 boot之后的执行代码是init目录下的main.c,执行初始化任务。研究一下 linus一开头就给出了四个内联静态函数static inline _syscall0(int,fork)static inline _syscall0(int,pause)static inline _syscall1(int,s

2015-06-18 08:54:31 669

原创 linux 0.12之boot启动过程从实模式变为保护模式的一些说明

本次讨论的是linux 0.12版本,在bochs模拟x86的环境下。 在bootsect和setup代码都是执行在16位的实模式下,而head是执行在32位的保护模式下,这两模式的切换在代码中是如何实现的,这里做一个总结。 在setup将system copy到地址0后,开始了cpu的模式转变。 第一步lidt idt_48 ! load idt with 0,0lgdt gdt_48 !

2015-06-17 12:20:12 1246

原创 github使用中出现问题总结(持续更新)

一、上传自己的工程 看官方的资料最好 1、在github上注册, 2、新建一个repository,加上工程名,(readme.md暂时不加),这时跳出界面,上面就有教程,连接github服务器有三种方法。set up in desktop、http、ssh 2.1首先实验http 1)打开git.shell进入工程目录; 2)git init; 3)git a

2015-06-11 15:49:26 648

原创 关于nios下载出现(Connected system ID hash not found..)问题的解决

这个来源于网络博客各位的总结,这里只做汇总总结了一下遇到这种错误的情况和解决方法 1) unused pin没有设置,可能会收到外部信号的干扰;设置未用引脚为As input tri-stated. 2) 系统时钟信号没有约束,或者SDRAM等存储设备的时钟没有配置正确; 3) 系统复位信号没有连接外部复位开关; 4) 可能某些PIN分配了错误管脚;逐一检查设计PIN的分配。 5) S

2015-06-11 10:19:20 3812

原创 函数返回值为指针的一个陷阱(使用inet_ntoa函数时遇到的问题)

此函数在socket编程中使用,将32位大端序整型格式IP地址转换为点分十进制格式。成功时返回转换的字符串地址值,失败时返回-1。char * inet_ntoa(struct in_addr addr);使用一段小代码测试#include #include int main(void){ struct in_addr addr1, addr2; char

2015-06-01 22:03:28 1073

原创 从链接、存储的角度去理解编译器对关键字的处理(static、extern等)

关于标识符的属性研究链接属性对于一个标识符而言,就链接角度分析,有external、internal、none,三种属性,如果整个工程处于一个文件,也就无所谓external了,在不同文件中需要相互引用时,会体现出external和internal的属性。None一般出现在函数中,比如定义的一个变量,因为其作用域仅限于函数,所以是作为独立个体,就比如在每个函数中使用for循环时,都可以定义 int

2015-06-01 20:23:06 554

IPCalculator

IPCalculato

2015-04-25

gcc for andriond

android平台下的gcc编译器,程序猿朋友可以试试啊,挺不错的。 分别安装“C++编译器(即C4Droid).apk”和“GCC for C4droid-4.7.1_r1.apk”,然后就可以编写程序试试啦。

2015-04-14

CPU源代码分析与芯片设计及Linux移植

CPU源代码分析与芯片设计及Linux移植

2015-03-13

深入浅出hello world

[演講:深入淺出 Hello World -- 理解 Linux 上運作 Hello World 的種種機制]

2015-03-12

空空如也

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

TA关注的人

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