- 博客(153)
- 资源 (9)
- 收藏
- 关注
原创 阿兰图灵和冯诺依曼,谁才是可称得起计算机之父呢?
作者:知乎用户链接:https://www.zhihu.com/question/27883465/answer/93161520来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。“计算机之父”这种笼统的称谓没有明确的结果。你可以认为是图灵,也可以认为是冯·诺依曼,你认为是谁就是谁。非要叫的话可以是:巴贝奇Charles Babbage——通用计算机之父 图灵Alan Turing——计算机科学之父 约翰·阿坦那索夫John Vincent Atana.
2021-02-28 20:25:56 9933 1
原创 uboot各种目录下的文件作用
uboot各种目录下的文件作用uboot下载地址:http://ftp.denx.de/pub/u-boot/1、目录分布2、目录结构变化:u-boot-2010.03及以前版本├── api 存放uboot提供的接口函数├── board 根据不同开发板定制的代码,代码也不少├── common 通用的代码,涵盖各个方面,已命令行处理为主├── cpu 与体系结构相关的代码,ub
2021-02-28 19:43:04 460
原创 咬了一口苹果死去的计算机之父——图灵
艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。1910年左右的伦敦1912年生于英国伦敦帕丁顿,家族成员里有三位当选过英国皇家学会会员,祖父曾获得剑桥大学数学荣誉学位。父亲早年就读于牛津大学历史系,后来在印度公务署为英帝国效力。母亲曾就读于巴黎大学文理学院。当时印度为英国殖民地外祖父是一位工程师,因为在印度修建桥梁和铁路赚了大钱。1907年,图灵的父母相识...
2021-02-28 09:01:34 1153
转载 天才中的天才—冯·诺依曼简介
https://www.toutiao.com/i6707878069182398988/参考:数学扫地僧冯·诺依曼(John von Neumann,1903~1957),美国数学家,原籍匈牙利。毫无疑问,冯·诺依曼是20世纪最重要的数学家之一,他是基础数学(包括算子理论,测度论,集合论,代数几何,遍历论等)、量子力学、计算机科学与工程、博弈论等领域内的科学全才之一,由于他在相关领域内的开创性贡献,被后人誉为“计算机之父”和“博弈论之父”。冯·诺依曼出生于奥匈帝国时期的布达佩斯,父亲是勤奋机智的犹
2021-02-27 23:45:51 2909
原创 图灵1
简介艾伦·麦席森·图灵(英语:Alan Mathison Turing,1912年6月23日—1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。艾伦·麦席森·图灵生平1912年6月23日,艾伦·麦席森·图灵生于英国帕丁顿。1931年,图灵考入剑桥大学国王学院,由于成绩优异而获得数学奖学金/在剑桥,他的数学能力得到充分的发展。1935年,他的第一篇数学论文“左右殆周期性的等价”发表于《伦敦数学会杂志》上。同一年,他还写出“论高斯误差函数”一文。这一论文使他由一名大学生直
2021-02-27 22:01:30 1239
原创 bootloader 详细介绍
Bootloader对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux系统同样离不开引导程序,这个引导程序就叫作Bootloader。6.1.1 Bootloader介绍Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的B.
2021-02-27 11:11:58 5389
原创 作为一个江苏人,我眼中的苏宁
江苏人,人人都在苏宁电器的地面商店里买过东西。我也不例外。听说张近东要转让苏宁易购的股份给一家疑似国企或国有基金,作为一个地道的江苏人,感慨良多。中国有4个电商平台:天猫,京东,拼多多和苏宁易购。还有大商,国美什么,已经彻底掉队,暂且不提。这四个电商平台,其中京东、苏宁易购和江苏关系颇为密切。苏宁总部位于南京仙林的徐庄软件园,每日早晚高峰地铁站,浩浩荡荡的都是苏宁人,同时苏宁地产在南京四处开花,拥有一套苏宁出品的房产是每一个想要定居南京的年轻人的梦。而京东的掌门人是宿迁人,老板娘也是地道的
2021-02-27 09:55:36 1082
原创 归并排序c语言
1 void mergeAdd(int arr[], int left, int mid, int right, int *temp){ 2 int i = left; 3 int j = mid + 1; 4 int k = left;//临时下标 5 while (i <= mid&&j <= right){ 6 if (arr[i] < arr[j]){ 7 temp[k++] = arr[i++]; 8 .
2021-02-26 09:53:09 324
原创 usb基础知识以及枚举过程介绍
一个USB设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等等。由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描
2021-02-26 09:52:23 871
原创 Linux usb gadget框架概述
大大小小开发了四个与gadget相关的驱动,字符驱动、g_multi、g_ether、g_zero,在这里把自己对gadget的开发中自己的感悟记录之。想要了解gadget,必须了解其框架,知道composite、gadget、udc三者之间的联系,知道usb描述符的作用。一个usb device有一个设备描述符。有一个或者多个配置描述符一个配置描述符有一个或者多个接口(在gadget端,接口正式命名是usb_func)。一个接口有0个或者多个端点。编写gadget的关键..
2021-02-26 09:51:30 2490
原创 shell 脚本关键字&符号
shell概念"shell"既是一种解释型编程语言,也是一个这种编程语言的解释器的名字 shell是解释型语言,就是解释器会一条一条的翻译每一条语句并执行,对比之下,C语言是编译型语言,编译器把整个工程编译成可执行文件才能执行 在没有续行符(\回车)的情况下,shell脚本的一条语句以"回车"为结束 任何一个shell脚本程序都必须在开头用#!标识使用的shell程序,如果用的是bash,那就是#!/bin/sh shell脚本一行中的#之后的部分为注释 刚刚写完的一个shell script
2021-02-26 09:44:44 4753
原创 shell脚本的执行
shell脚本有两种执行方式,一种是直接执行,一种是使用$source或.命令执行直接执行直接执行shell脚本,bash会在当前bash下新建一个子bash进程用来执行shell脚本,此时脚本里定义的变量,并不会传会到父bash进程中#!/bin/bashVAR=12echo $VAR$exec.sh 12$echo $VAR #父bash中并不存在VAR$source或.执行使用$source来执行一个shell脚本表示使用当前.
2021-02-26 09:43:57 313
原创 shell脚本变量
既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值。自定义变量shell变量不需要声明,随用随定义,给变量赋值的时候要注意shell是空格敏感的 使用{}确定变量的范围是个好习惯$NEWENV =123 #等号前面有空格,不行NEWENV: command not found $NEWENV= 123 #等号后面有空格,不行123: command not found
2021-02-26 09:43:25 365
原创 shell实例流程控制&函数
条件if-then-elif-then-fiif的条件部分经常使用test EXPRESSION或[ EXPRESSION ]实现,test的用法可以参见testif 条件1 #if 条件1;then then 执行语句1elif 条件2 #elif 条件2;thenthen 执行语句2 else 执行语句3fi #条件结束标识,即将if反过来举个栗子#!/bin/shvar="a test string"if [
2021-02-26 09:42:43 284
原创 shell实例-跨目录执行,彩色输出,临时文件,行遍历文件
参数检查#!/bin/bashset -eif [ ! -n "$1" ];then echo "Usage: #cmd <> []" exitfi跨目录执行脚本但维持脚本与"."的相对位置不变SH_PATH=$(cd $(dirname $0);pwd)cd ${SH_PATH}彩色日志输出COLOR_RED='\033[1;31m'COLOR_GREEN='\033[1;32m'COLOR_NC='\033[0m'Log_INFO(){ m
2021-02-26 09:42:01 353
原创 Linux usb子系统(二) _usb-skeleton.c精析
"./drivers/usb/usb-skeleton.c"是内核提供给usb设备驱动开发者的海量存储usb设备的模板程序, 程序不长, 通用性却很强,十分经典, 深入理解这个文件可以帮助我们更好的理解usb子系统以及usb设备驱动框架, 写出更好的usb海量存储设备驱动。匹配前既然是一个usb设备驱动的模板,那么就少不了构造一个usb_driver对象并将其注册到内核中,650 static struct usb_driver skel_driver = {651 .nam
2021-02-26 09:41:07 483
原创 Linux usb子系统(一) _写一个usb鼠标驱动
USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配。USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动,通常,对于USB这种标准化的设备,内核已经将主机控制器的驱动编写好了,设备上的Gadget驱动通常只运行固件程序而不是基于Linux, 所以驱动工程师的主要工作就是编写主机端的USB设备驱动。USB子系统框架下图表示了Linux中USB子系统的框架结构,和i2c一样,USB子系统也可分为三层:**设备
2021-02-26 09:40:34 694 4
原创 exynos 4412 电源管理芯片PMIC 的配置及使用方法
开发板:迅为4412精英版。uboot:uboot-2014-10。PMIC:SAMSUNG S5M8767A 在移植新版u-boot的时候,上网搜电源管理芯片的使用方法资料,发现几乎没有,就算是datasheet也很难下载得到,不知是何原因?我只能理解成这部分知识比较简单,没人愿意写吧。但记录一下原理和使用方法做为备忘,总归没有什么坏处。另外仍然需要提前声明的是,这里只提供官方手册推荐的配置方法,自由玩法不保证可行及稳定性。一、概览LDO和BUCK的概念:请参考《嵌...
2021-02-25 08:51:04 2150
原创 2014-10 u-boot 顶层config.mk分析
Based on u-boot-2014-10.顶层config.mk的内容并不长,这里全部贴出来吧。这里以已经执行完make trats_defconfig(这个流程可以参看:《2014-10 u-boot make xxx_defconfig 过程分析》),在顶层目录已经生成了.config文件为例,说明config.mk中各变量的取值。15PLATFORM_RELFLAGS:=16PLATFORM_CPPFLAGS:=17PLATFORM_LDFLAGS:=...
2021-02-25 08:45:27 427
原创 2014-10 u-boot make过程分析
Based on u-boot-2014-10.当我们已经做完make xxx_defconfig后(这个流程可以参看:《2014-10 u-boot make xxx_defconfig 过程分析》),在源码顶层目录生成.config文件,然后我们执行make命令,下面是它的流程:make默认make all所有的目标,而all的定义如下:all: $(ALL-y)需要条件$(ALL-y),而$(ALL-y)的定义如下:ALL-y+= u-boo...
2021-02-25 08:44:53 598
原创 2014-10 u-boot make xxx_defconfig 过程分析
Based on u-boot-2014-10.当我们执行make xxx_defconfig时,顶层Makefile中唯一的匹配目标是:%config:scripts_basic outputmakefile FORCE +$(Q)$(CONFIG_SHELL) $(srctree)/scripts/multiconfig.sh$@依赖条件1:scripts_basicscripts_basic: $(Q)$(MAKE) $(build)=scri...
2021-02-25 08:44:18 418
原创 exynos 4412 eMMC配置及使用方法
开发板:迅为4412精英版。uboot:uboot-2014-10。开发板上的eMMC:三星KLMxGxxEMx-B031 容量4GB 使用eMMC 5.0标准。exynos4412上的eMMC控制器:使用的eMMC4.41标准。参考文档:见文末。参考文档 [2] 需要到JESD网站下载。此款三星eMMC兼容e.MMC 5.0标准协议,但是4412的eMMC控制器是使用的e.MMC 4.4标准,这样的搭配是不是不太好暂且不表。一、时钟1.1 eMMC时钟部分最基...
2021-02-25 08:42:54 819
原创 如何在Ubuntu下使用TF/SD 卡制作Exynos 4412 u-boot启动盘
硬件:迅为iTop 4412精英版 & TF卡软件:系统自带终端即可首先,我们应该清楚TF/SD卡可以看作一张完全空白的“白纸”,之所以有分区、分区格式的区别不过是在在这张“白纸”的某些特定位置写入了一些数据来指示分区、分区格式。其次,我们还应该清楚,在TF/SD启动模式下,exynos 4412一上电,内部iROM会从TF/SD的第1个Block(第512个字节开始)读取8KB的数据到内部iRAM,然后从内部iRAM的0地址开始运行。原理搞清楚了,那么首先需要把T...
2021-02-25 08:27:09 788
原创 exynos 4412 时钟配置
时钟初始化的一般方法和顺序,u-boot、普通裸机程序如果需要都可以使用。—————————————————————————————-本文解决的问题:1、宏观上几个大模块的时钟配置顺序。2、小模块的时钟选择、分频和一般的配置顺序。3、对小模块来说,官方手册推荐的时钟源选择问题。4、本文只以手册的“推荐配置”进行说明,“自由玩法”不保证稳定性。—————————————————————————————-多路选择器选择原则:1、尽量保持默认配置不动。2、尽量选择前端.
2021-02-25 08:25:56 947
原创 【粉丝问答13】大厂笔试11道嵌入式笔试题
笔试题1. ARM指令和中B和BLX的区别?B:跳转执行B 指令的格式为:B{条件} 目标地址B 指令是最简单的跳转指令。一旦遇到一个B 指令,ARM 处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是相对当前PC 值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位(前后32MB 的地址空间)。举例:B Label ; 程序无条件跳
2021-02-24 21:07:06 1060
原创 可重入函数与不可重入函数
一. 不可重入函数 1.1. 什么是不可重入函数 a.在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为不可重入这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。 1.2. 不可重入函数产生 1.2.1.满足下列条件的函数多数是不可重入的 a.函数体内使用了静态的数据结构; b.函数体内调用了malloc()或者...
2021-02-24 19:01:49 313
原创 Linux下进程、线程同步几种方法
在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。所谓进程同步(线程同步同理),主要是解决临界资源互斥访问的问题。如多个进程访问同一片共享内存,这片共享内存必须互斥使用。一.进程同步在Linux下,进程同步的解决方式主要有四种:1. 信号量2. 文件锁3. 无锁CAS4. 校验方式(CRC32校验)1. 信号量可以借助Linux的信号量的PV操作来实现对临界资源的互斥访问。详情可看博文:http://blog.csdn.net/okiwilldoit/art
2021-02-24 18:52:43 1481
原创 Linux中四种进程或线程同步互斥控制方法
一、Linux中 四种进程或线程同步互斥的控制方法:1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对一个共享资源的单独访问而设计的。3、信号量:为控制一个具有有限数量用户资源而设计。4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。二、临界区(Critical Section) 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么...
2021-02-24 18:51:25 1694 2
原创 dm9000网卡,uboot代码分析
uboot移植(九)移植网卡DM9000LouisGou 2018-06-09 20:37:04 786 收藏 2 分类专栏: uboot 文章标签: uboot版权一、原理TQ210 板载的网卡芯片是 DM9000A,接在 S5PV210 的 SROM 控制器的 BANK1 上。S5PV210 的 SROM 控制器支持 8/16 位 NOR Flash/PROM/SRAM 内存。 分为 6 个 bank,每个 bank 寻址空间达 128MB。 每个 bank 有一个
2021-02-23 21:10:12 554
原创 【粉丝问答12】如何计算函数的执行时间?
0、问题描述粉丝想计算一个函数的执行时间。一、问题分析函数的执行时间的统计在嵌入式系统中会被频繁的用到,知识点很重要。本文从两个方面来讨论类似的问题:程序内计算一个函数的执行时间计算一个程序的执行时间二、程序内如何计算一个函数的执行时间?1. 思路我们在执行函数前后分别记录下时间戳,然后计算两个时间戳的差值即可。我们需要借助函数clock_gettime来实现这个功能。看下该函数的定义:#include <time.h>int clock_gettime(cl
2021-02-23 20:47:19 574
原创 Linux time命令
Linux time命令 Linux 命令大全Linux time命令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。语法time [options] COMMAND [arguments]参数:-o 或 --output=FILE:设定结果输出
2021-02-23 19:43:35 538
原创 Linux经典书籍推荐
入门篇《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。驱动篇《LINUX设备驱动程序》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码分析比较多,基于2440的,对linux外围驱动有很全面的讲解内核篇浙江大学的《LINUX内核源代码情景分析》,外国鬼子的《莱昂氏...
2021-02-22 23:41:57 870
原创 Linux Namespace : 简介
namespace 的概念namespace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响
2021-02-22 23:39:16 876 1
原创 Linux并发与同步
典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。多线程我们先来看一下什么是多线程。在Linux从程序到进程中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有一个控制权的存在。当函数被调用的时候,该函数获得控制权,成为激活(active)函数,然后运行该函数中的指令。与此同时,.
2021-02-22 19:21:55 434
原创 linux lsof命令详解
简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及
2021-02-22 19:05:18 415
原创 Linux进程间通信
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。E、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程
2021-02-22 18:29:10 427
原创 Linux文件管理
对于计算机来说,所谓的数据就是0和1的序列。这样的一个序列可以存储在内存中,但内存中的数据会随着关机而消失。为了将数据长久保存,我们把数据存储在光盘或者硬盘中。根据我们的需要,我们通常会将数据分开保存到文件这样一个个的小单位中(所谓的小,是相对于所有的数据而言)。但如果数据只能组织为文件的话,而不能分类的话,文件还是会杂乱无章。每次我们搜索某一个文件,就要一个文件又一个文件地检查,太过麻烦。文件系统(file system)是就是文件在逻辑上组织形式,它以一种更加清晰的方式来存放各个文件。路径与文.
2021-02-22 18:23:58 253
原创 Linux进程基础
计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令(instruction)。所谓的程序(program),就是这样一系列指令的所构成的集合。通过程序,我们可以让计算机完成复杂的操作。程序大多数时候被存储为可执行的文件。这样一个可执行文件就像是一个菜谱,计算机可以按照菜谱作出可口的饭菜。那么,程序和进程(process)的区别又是什么呢?进程是程序的一个具体实现。只有食谱没什么用,我们总要按照食谱的指点真正一步步...
2021-02-22 18:22:34 365
原创 linux sed 命令
sed 是一个流编辑器(stream editor),主要用来执行文本替换。但 sed 的主要设计目的是以批处理的方式而不是交互的方式来编辑文件。命令简介基本命令格式sed [常用选项] 命令文本 输入常用选项 -n (--quiet, --silent):安静模式。在 sed 的基本用法中,所有来自标准输出的信息都会被列出到终端上。加上 -n 参数后,则只有被sed 处理的那些行才会被输出。 -e:指定在指令列模式上执行的命令文本。默认不需要指定,只有同时要执行多个命令文...
2021-02-22 18:21:27 372 1
S3C2440全套中文手册.PDF
2020-10-24
mdk414.rar
2020-10-23
移植无线AP,使无线网卡变成AP
2020-09-18
MPU6050-英文原版数据手册.pdf
2020-08-23
公众号一口Linux驱动部分源码汇总.rar
2020-08-23
zigbee网络建立过程
2013-05-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人