7 kerneler_

尚未进行身份认证

做一个有技术追求的人

等级
TA的排名 1k+

心理调整

在新公司工作近2个月,还没适应节奏和大公司的沉重流程。占空,有时间写下

2016-11-30 22:40:39

新的开始,全力以赴!

就这样,工作4年多来第一次有了一个大半个月的假期,工作日早晨看着上班族匆匆忙忙的身影,深切感受到了李涉“偷得浮生半日闲”的惬意,钓钓鱼,看看景,美好的时光总是过的很快。

2016-10-07 16:36:47

arm-linux内存管理学习笔记(3)-页表前戏

我们在arm-linux内核中看到各种相关宏定义都表示,linux看到的arm一级页目录项有2048个,每个页目录项8bytes,二级页表项是512个。不过arm-mmu的硬件机制却是4096个一级页目录项,每个页表有256个页表项。两种软硬件机制是靠把2个相邻页目录项的页表存储空间连续分配实现平滑过渡的。

2016-07-24 17:35:38

Cortex-A8处理器memcpy的优化方案

uncached区域到uncached区域memcpy提升3倍,uncached区域到cached区域提升3.5倍,cached区域到uncached区域提升13.2倍,连我自己都吓到了!

2016-05-24 19:51:04

Thank You,Kobe

大学3年遇到了08到10的两连冠湖科,荣幸!6年已去。老科退役,老鱼指教,奥多姆死里逃生,拜纳姆不知去向,加嫂公牛,扎扎火箭,巴恩斯快船,阿泰留守。你们还好吗?曾经一起荣耀,如今散落联盟各自飞。thankyou,kobe谢谢湖科,愿老科在商界延续传奇。thankyou,brother更感谢一起看球的大学兄弟!!曾经一起疯狂到天亮,如今为梦想四方天涯

2016-04-14 22:03:25

arm-linux内存管理学习笔记(2)-内核临时页表的建立

需要搞明白的是,linux系统上执行./a.out运行,其实并不是运行的a.out这个elf文件。内核对于要运行的elf文件会调用load_elf_binary进行解析,首先是根据elf文件的header信息获取它需要的解释器,然后加载需要运行的各个段到内存中,把控制权交给解释器,解释器会加载该程序需要动态链接库(静态链接就不运行解释器),最后解释器将控制权交给内存中的程序入口,程序运行。

2016-04-06 19:24:56

arm-linux内存管理学习笔记(1)-内存页表的硬件原理

学习内核的内存管理如果脱离了MMU的硬件原理,只去学习其软件逻辑,真的很难懂。说到底,软件代码的逻辑是为硬件服务,只是为了充分发挥硬件的各项功能,因此学习linux的内存管理机制,首先要学习下该处理器架构下MMU的工作原理,这样对我们理解页表机制的逻辑很有帮助

2016-04-05 16:40:52

处理器一条指令需要几个时钟周期?

思考个小问题,处理器执行一条指令需要几个时钟周期。对于软件工程师来说,印象流我们可能会觉得执行一条指令一个时钟周期嘛,一条指令算是一个最小的原子操作,不可能再细分了吧。如果看看诸如《seemipsrun》,《arm体系架构》等书籍就会了解到,这个问题可没这么简单了,因为处理器设计中使用了流水线技术。一条指令还是相当复杂的,处理器在一个时钟周期内肯定是完不成的,可能需要好多个时钟周期来

2016-03-30 19:47:42

uboot下netconsole的原理及使用方法

kernel下也有netconsole机制,不过由于内核下的console只有write功能(因为内核启动是没有交互的,只有输出信息),因此kernel下netconsole机制其实就是向内核注册提供网络发送数据功能的console_device,具体实现代码在drivers/net/netconsole.c中。

2016-03-17 18:54:43

为什么空循环进程会导致CPU占有率很高?

linux系统是时间片调度算法,微观上所有可运行进程都是串行,不管进程中作何操作,该进程的时间片一到就切换到下一进程,那为什么一个空循环进程CPU占用率还这么高

2016-01-29 19:57:13

2015年年尾总结

人就这样吧,闲着的时候老是感觉不踏实,想忙起来,忙的时候又想早点弄完休息休息,人这一辈子不就是在这一条无间之道上反复煎熬,踽踽独行吗。

2015-12-31 23:05:10

收获的季节

我了解自己是一个追求成就感的人,坚持带给我很多成就感,那就坚持下去!

2015-11-12 19:19:56

串口线的交叉直连之痛

首先我感觉要明确一点的是2台设备串口相连最基本的原则:保证2台设备串口的收发引脚交叉相连,即设备的发送引脚与另一台设备的接收引脚相连,RX与TX交叉相连,其余引脚还是一一对应。

2015-10-20 10:44:22

powerpc uboot链接脚本大改造

uboot中bss段的生成过程可以分为如下步骤:(1)链接脚本中定义bss段地址范围__bss_start__bss_end。(2)编译链接elf时,根据链接脚本确定下__bss_start__bss_end的绝对地址,记录在elf文件的段表中。(3)elfobjcopy生成u-boot.bin时,去掉bss段。(4)加载u-boot.bin启动运行,根据__bss_start__bss_en

2015-10-01 16:40:50

一场大雨引发的思考

2个人下雨天由公司去食堂吃饭,一个走的快,一个走的慢,哪个淋雨少。

2015-09-23 16:26:43

powerpc-linux内核start_kernel之前启动分析(1)-开门见山

公司处理器换核,前期用FPGA仿真板进行了芯片验证和软件移植,借这个机会也学习了powerpc处理器的一些知识,对powerpc的内核启动也有所了解。完成了arm版本内核start_kernel之前汇编分析,也想尝试写几篇文章对powerpc的启动进行分析,与大家分享。其实不管哪个平台处理器,内核启动之初,因为运行地址无法保证与链接地址一致,都要完成一次地址的配置和跳转来保证内核运行地址与链接地址的一致性。

2015-09-16 16:34:06

arm-linux内核start_kernel之前启动分析(3)-开启MMU,走进新时代

在第二篇启动分析文章中讲到createpgtable时,对__turn_mmu_on所在的1M地址空间做了平映射,到现在这个阶段就看出其作用了。CPU执行完成“mcrp15,0,r0,c1,c0,0”指令后开启MMU,接下来CPU取指地址是当前pc+4,由于做了平映射,虽然接下来是虚拟地址,但是该虚拟地址跟之前的物理地址是完全一致的,pc+4可以取到mrcp15,0,r3,c0,c0,0指令

2015-08-28 16:35:38

kernel如何保证cache数据一致性

那么问题就来了,正因为嵌入式处理器软件管理cache,就需要我们代码主动去操作cache,但在内核开发中很少会直接进行cache操作,cache操作到底在哪里进行的,什么时候需要操作cache。首先想明白一点,为什么要进行cache操作,只能说cache是天使也是魔鬼。cache在提高了系统性能同时却导致了数据的不一致性。嵌入式处理器软件管理cache的初衷就是保证数据一致性。那什么地方需要保证数据一致性呢?对于由CPU完全操作的数据,数据是完全一致的。也就是该数据完全由CPU写读操作,没有对CPU不

2015-08-27 10:31:21

/dev/mem可没那么简单

这几天研究了下/dev/mem,发现功能很神奇,通过mmap可以将物理地址映射到用户空间的虚拟地址上,在用户空间完成对设备寄存器的操作,于是上网搜了一些/dev/mem的资料。网上的说法也很统一,/dev/mem是物理内存的全映像,可以用来访问物理内存,一般用法是open("/dev/mem",O_RDWR|O_SYNC),接着就可以用mmap来访问物理内存以及外设的IO资源,这就是实现用户空间驱动的一种方法。用户空间驱动听起来很酷,但是对于/dev/mem,我觉得没那么简单,有2个地方引起我的怀疑:(

2015-08-13 14:05:07

mac与phy如何实现网络自适应

对于100Mphy,外部网络10/100M切换,仅需要改变mac提供的数据时钟即可,mac接口模式不变,因为MII兼容10/100M。对于1000Mphy,外部网络10/100/1000M切换,首先需要改变mac的接口模式(使用的数据线个数不同了),因为10/100M下phy会切换为MII模式,根据接口模式在改变其数据时钟。当然phy在自动协商完成后是其硬件逻辑会完成模式GMII/MII的转换,而对于mac,则要由驱动根据phy的工作状态来确定mac的接口模式以及需要提供的clk。这也是我们软件开

2015-07-29 18:46:28

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!