自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 之-记忆模型

记忆模型

2023-01-20 10:47:43 179

原创 实例讲解USB的枚举过程

https://www.cnblogs.com/ljf181275034/articles/2942642.html(实例讲解USB的枚举(配置)过程)结合自己用BUShound抓的数据(下图),发现几乎完全一致。中间涉及到一个USB Mass Storage协议,可以参考这个:https://blog.csdn.net/melvda/article/details/38370437和这个:https://www.cnblogs.com/shangdawei/archive/2013/06/1

2020-10-13 18:14:50 1686

原创 从应用程序到USB设备端的 数据流结构

在应用程序中,通过windows函数deviceiocontrol把数据发送给驱动,驱动生成CBW包发送给设备,设备对CBW包进行解析,如果是USB接口+SD卡,则在USB中转成SD CMD再发送给SD卡;如果是U盘,则直接进行后续处理。...

2020-09-24 15:02:36 205

原创 keil、keil4、BL51 Misc

主要讲其中的Overlay的增加段代码之间的调用关系功能。keil编译后可以在.m51文件中看到这样的一段类似代码:即所谓的call tree。keil编译的时候会建立call tree,以适当的分配变量位置。但是当通过函数间接的调用另一个段的函数的时候,call tree就没办法正常建立起来,这个时候就需要手动的添加call tree关系。...

2020-09-23 15:11:15 538

原创 汇编控制连接指令,PUBLIC、EXTERN

联合编译主要用到控制连接伪指令,包括PUBLIC和EXTERN伪指令,用于表明当前模块中需要用到的外部函数名及可被其它模块调用的函数名。 PUBLIC用于声明可被其它模块使用的公共函数名。 EXTERN是与PUBLIC配套使用的,要调用其它模块的函数,就必须先再模块前声明。就实地文件看下来,感觉A工程里的连接文件是给B工程看的,B工程的连接文件是给A工程看的。...

2020-09-22 18:23:35 1913

原创 BUS Hound抓到的数据和USB CBW/CSW是一一对应的关系!

2020-09-18 17:27:23 444

原创 host到SD设备之间的命令转换

2020-09-18 11:47:59 110

原创 NO MATCHING SEGMENT FOR WILDCARD SEGMENT NAME

NO MATCHING SEGMENT FOR WILDCARD SEGMENT NAME。今天编译的时候老是出现这个问题,现在已经解决。原因是在给新增的代码块分配内存地址的时候,同时分配了带参数和不带参数的。比如:?PR?T7*(0xD000),?PR?_T7*。其中逗号左边的是不带参数的函数,逗号右边的是带参数的函数。但是我在写函数的时候,并没有在该段内分配带参数的函数,导致出现了这个编译问题。改成:?PR?T1*(0xD000)可解决问题。...

2020-09-17 17:49:42 785

原创 write10命令下发失败的解决,scsi命令write10

这次遇到一个下发write10命令失败的问题,最后解决了,记录一下,避免再犯。首先用的是scsi命令write10命令,在实际测试的时候发现总是第一次成功,后面就失败了。后来检查发现,是以为代码设计不合理,导致每发一次write10命令,都会进入一次creatdevice函数,并且一次命令结束之后也没有closedevice,导致重复进入creatdevice,使得设备抓取异常。后来增加了closedevice之后,问题得到解决。总之scsi设备通信的一个正常结构流程应该是creatdevice,de

2020-09-16 10:03:28 1246 1

原创 SCSI、DeviceIoControl、SCSI_PASS_THROUGH、CDB

SCSI的设备间通信涉及到一个主要的windows函数,DeviceIoControl()。在获取到设备句柄之后,就可以通过上面的函数和设备通讯了。BOOL fgStatus = DeviceIoControl(m_hControlDrv,IOCTL_SCSI_PASS_THROUGH,&sptwb,u32Length,&sptwb,u32Length,&u32Return,FALSE);第一个参数为句柄。第二个参数代表此次的控制码, IOCTL_SCSI_

2020-09-15 11:42:31 1807

原创 为什么the shy这名选手这么招人喜欢

先给结论,强大的实力和羞涩的性格。为什么是这两点,且听娓娓道来。第一点,实力强大。人为什么会被实力强大的人吸引?之前有说过,人类纷繁复杂的行为之下永远都只有一个最底层的逻辑,那就是人的生存本能。在打猎的时代,实力强大的人可以轻而易举的打猎到食物,实力不强的人要么饿死,要么依附实力强大的人,这样可以提高他们的生存几率。这样一路进化下来,虽然现在的人都已经能吃饱穿暖了,但是这个特性依旧被保留下来,即实力强大的人总是比实力弱的人更吸引人。第二点,羞涩的性格。为什么是这个,明明任何普通人都有这个性格,

2020-09-10 17:42:40 439 1

原创 无限的租房记

2020.09.05早上十点吃了个饭,搭地铁去明故宫站,租房。联系昨天联系好的带看人A,说在地铁门口等他,他说十分钟后到。十分钟后,电话响起,说在我右边,我抬头一看,是个小黑胖,骑着电动车。坐着电动车,去下马坊看可一个单室套,距离地铁口远,不朝南,屋内有点潮湿,不满意。坐电动车去清溪花园,看了一间四室合租,一对中年夫妻,一对三十左右年轻夫妻,一间没开门,一间空的卧室,感觉内部环境混乱,复杂,不满意。问还有别的房间吗,可能是觉得我太难搞,小黑胖说没了,我说那你把我在这里放下来吧,我再找找。此时已经

2020-09-07 14:06:57 326

原创 为什么SFR寄存器和internal RAM高128字节地址相同?

最早先的单片机internal RAM只有128字节,而特殊功能寄存器SFR不在internal RAM上,它们是属于很多其它不同的模块,为了方便访问,才把它们编在internal高128字节上。后来人们发现internal RAM128不够用了,想扩展成256字节,那就尴尬了,高128字节地址已经分配给SFR了,怎么搞?没关系,他们地址虽然一样,但是可以设置访问方式不一样,如果是直接寻址高128字节就是访问SFR,比如 MOV 88H, #00H,就是把0送进SFR里,而间接寻址就是访问RAM,

2020-09-04 11:17:31 1321

原创 直接寻址、间接寻址、立即数寻址、寄存器寻址

直接寻址,指令中直接放地址:MOV A, 50H把internal ram上,地址为80H单元里的数据送进A,假设80H地址里放的数据是01,那么最后A里的数据就是01间接寻址,地址存于寄存器中MOV A,@R0R0中存放的是地址值,把这个地址值中的数据放入A寄存器寻址,数据存于寄存器中MOV A, R0把R0中的数据放入A中...

2020-09-04 10:59:54 5618

原创 学习时要注重结构性知识的学习,更要善用比喻和类比

学习时注重结构性的学习,从结构外部到结构内部,从结构外部到结构外部的外部,从里到外,从上层到底层的结构要了解清楚,然后串联起来,最后以 塑造者/设计者 的角度考虑为什么要这样设计这样的结构,如果改变了结构可以吗,如果不可以又是为什么不可以,这样能帮助我们加深记忆和回忆,其实最主要的还是能加深对学习的东西的理解。最后理解了整体结构之后,如果能找到类似的结构类型,无论是不是同一个知识层面的,都可以更有效的帮我们加深理解。简单的说,学习要学习结构性的东西,硬件就是硬件结构,软件就是数据结构,之后再找到生活中类

2020-09-03 11:40:24 281

原创 时钟周期、机器周期、指令周期

时钟周期是时钟震荡一次需要的时间,在这个时间内,cpu只能完成一次基本的与或非操作机器周期,由12次时钟周期构成,一个机器周期内,cpu可能完成一次有意义的动作,比如取指令指令周期,一个指令周期包含多个机器周期,比如取指、译码、执行等一整套动作...

2020-09-02 15:13:50 420

原创 SRAM和DRAM以及ROM的区别

SRAM是静态存储器,由6个二极管构成一个bitDRAM是动态存储器,由一个二极管和一个电容构成一个bit,因为电容里的电荷会流失,所以需要动态刷新数据二者都是掉电数据丢失,DRAM相同面积存储量更大,SRAM虽然存储量小,但是速度更快ROM速度最慢,但是掉电之后数据不会丢失...

2020-09-01 09:53:16 1790

原创 宠物为什么会歪头看你?

要搞明白这个问题,首先要知道宠物在什么时候会歪头?这个不难回答,大部分宠物都是在遇到自己不明白的事情的时候歪头,比如人类的某些迷惑行为。也就是说,宠物会在好奇的时候歪头。那么宠物好奇的时候为什么会歪头?这个问题我自己还真没想明白,直到看到度娘上一个人说的:宠物在歪头的时候,视角会跟着歪头发生转变,相当于换一个视角看问题。(哎?这只人类在干什么,好奇怪啊,我怎么看不懂啊,我换个视角看看能不能看懂,歪头)所以 歪头 = 切换视角 = 想换个角度解决问题,妙哉妙哉。那么为什么有的生物会本能性的要换个

2020-07-31 17:10:14 143

原创 人为什么活着?这个观点绝对让你耳目一新

这个问题可以拆分为两个理解,一个是人为什么要活着,重点在“活着”,一个是人为了什么而活着,重点在“什么”。人为什么要“活着”?我问同事,人为什么要活着?答曰:人就是这么活着,没有为什么。这个答案我不能苟同,因为我的认知里,没有平白无故出现的事情,任何现象的出现,都是有底层原因的支撑的。后来在下班的路上,我突然想明白了这个问题,这里直接先给出我的结论:“活着”是自然进化筛选出的一个结果。为什么这么说?我们知道,活着或者说生存,本质上来说是一种生物本能,是写在基因里的,不仅仅对人类,对任何现存生

2020-07-30 10:32:19 253

原创 win10 vs2008到期的解决办法:

win10 vs2008到期的解决办法:找到:控制面板-更改卸载程序-vs2008点击 “更改/卸载”点击 “下一步”输入 “PYHYP   WXB3B   B2CCM   V9DX9   VDY8T”点击“完成”

2018-10-09 14:42:22 3981 1

空空如也

空空如也

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

TA关注的人

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