-
此方法在密码分析学即逆向工程中可分为:
1.理论不可破解 由于代码是由函数即子程序的集合构成的,即由函数指针(子程序地址)、函数体的长度两部分组成。 假若其中任意一个部分不存在即空时,函数即子程序将无法 正常执行。
2.理论可破解 必须修复即还原函数指针或函数内容,整个系统才能正常运行。 还原过程无法避开拦截即监视,故理论上必被破解。
-
我也遇到了同样的问题:
我前几天做了个stm8的项目,我用手机测了下没死机,但几天后客户拿了个对讲机开一下就复位了。
我们可是专业人志制的PCB 4层板。
出现原因:
后来发现是那个HT7044电压检测IC引起的,可能是山寨板的,对讲机开启时电源电压有变化,但示波器上显示在4.6V以上,HT7044却认为底于4.4V。
解决方法:
把复位电路改为一般的电阻电容电路就OK了!
不要总怀疑单片机,人家的STM8S的八位机没那么菜。
-
放弃功能?
我需要移动到画图的地方呀,
wince画图该调用什么函数,或者介绍给俺个有用的事例,不胜感激@
-
谢谢, byeyear,谢谢ST_ARM
======================
谢谢, 我现在只想看到例子的效果, 我感觉这样才能事半功倍, 当然TCP/IP协议,基本看了,当然现在缺的是实战。
开发板用的默认是RMII,但它也支持MII,我已经关闭了DHCP,IP段也设成和局域网一致了, 当连到PC的网口时,得出的结论,是” 受限制的链接“,
我有点疑惑, 我是不是自己再找一个路由器或交换机然后把开发板连到它的网口,然后我的电脑再访问? 但是,我感觉不用这样也可以。
ST的文档我已经看了,资料太少,发现没有帮上我的忙。
二位,都是过来人,能指点一下吗
-
引用 6 楼 zhdi1986 的回复:
那肯定一样呀,请问你的鼠标光标问题解决了没有?我的触屏驱动也存在一点屏幕,鼠标就不见了类似问题。
我添加了支持usb鼠标后,用鼠标打开校准软件,校正后,触摸屏就能用了。
一点屏幕,就不见,是在校准之前。
我看前面的人说的,应该是我一开的值舍得不对,经过校准后,值会改,那么我从校准后读出来的值应该和我编译时的值不一样才对啊
-
新手来学习了~~
-
查查spec,是不是有pattern和spec上的不一致了。
还有就是TOP/BOTTOM的差别,仔细看spec和你的代码,两者是有差异的。
fix bug就OK
-
楼主莫非是想让驱动直接访问应用程序的内存而不使用copy_from_user函数?
-
嗯.我觉得用示波器能检测出晶振好坏..
至于电容嘛,我们可以用重放电特性检测吗.还有它不是能通交流哦.
用个交流电路都可以测吧.....
线检查元器件坏没,差哈单片机手册看18.19端口输出电压电流吧
-
根据你的想法,矩阵式即行列式(N行 * M列) --〉1行*8列 (硬件方面)
软件:先逐一输出扫描字(FE,FD,FB,F7,EF,DF,BF,7F -〉每个扫描字对应一个按键);
等待中断响应;
响应后,执行中断服务程序( 判断当前输出哪个字)。
-
你用的单片机是什么啊?
SPCE061A 就能很方便进行WAVE的语音文件的播放,
楼主可以去凌阳官网看看吧。
-
下了个PB5.0在PC机上,
按说明,第一步,文件放任意目录了
第2、3、4都没问题,到第5步,右键出来的'Add to OS Design'是灰色的,不可选,不知道问题出在哪里,
继续请教啊!哪位指定一下子
-
UFN_DETACH这个参数正常是由BSP的USB驱动传到MDD层的,所以看一下你的驱动有没有什么问题。
-
好的,谢谢大家了
-
好黑.......这么贵.......
感觉各有长短.....
-
回12楼,当你用到的时候,就一点儿不无聊了。
正确答案 sizeof(struct stb)= 24。
为什么?
先讲讲变量的对齐,所谓变量对齐,就是把变量安排在固定的地址边界上,比如1字节地址边界可以是任意地址,2字节地址边界最后一位必须为0,4字节地址边界最后两位必须为0。
在默认的条件,变量都是被对齐到其自然边界的,所谓自然边界,对于基本数据类型来说,就是数据自然长度的地址边界,比如char型是1字节边界,int32型是4字节边界,也就是int32型的变量在默认情况下一定是被放到以0,4,8,c结尾的地址上。基本数据类型的长度在任何情况下(包括使用了pack和align)等于其自然长度或自然长度的整数倍(数组)。
结构体的自然边界等于结构体内部最长字段的自然边界。结构体的长度在默认情况下(不使用align和pack)一定是其自然边界的整数倍,比如一个结构提的自然边界是4,那么结构体的长度(使用sizeof得到的值)必然是4,8,12,16......。
因此,struct sta的自然边界是4字节地址,任何一个struct sta变量的地址都位于以0,4,8,c结尾的地址,struct sta的数据有效长度是sizeof(char)+sizeof(int) = 5,但由于结构体长度必须是自然边界的整数倍,因此sizeof(sta)=8。从另一个角度来看,在struct sta内部,sta.a被放在了起始地址,由前面知道这是一个4字节边界(当然可以做字节边界),后面的sta.b的自然长度是4,必须被放到4字节边界,因此sta.a后面被填充3个字节,整个结构提的长度就是8。
再来看struct stb,其自然边界是8(内部数据最长为long long,8字节),数据有效长度是sizeof(char)+sizeof(struct sta)+sizeof(long long) =17,由于struct stb的长度必须是8的倍数,因此sizeof(stb)=24,从另一个角度看,struct stb必然被安排在以0和8结尾的地址上,所以在struct stb内部,stb.a被放在一个8字节边界地址,后面的stb.b的自然边界是4,必须放到4字节边界地址,因此stb.a后面填充3个字节,接下来紧挨的地址是一个“8字节边界地址+12(stb.a+stb.b的长度)”的地址,这个地址不是8字节边界地址,不能存放stb.c,因此stb.b后面填充4个字节,然后存放stb.c,所以stb的长度是12+4+8=24。
在说一下#pragma pack(n),这个编译器参数是C语言通用的,只对复杂数据类型有效(结构体、类对象),pack(n)规定了结构体内的最大对齐边界为n,当结构体内的字段自然边界小于n时,该字段按照自然边界对齐,否则该字段按照n对齐。同时pack(n)也等于规定了结构体的自然边界为n,使用了pack(n)后,用sizeof求一个结构体的长度,必然是n的整数倍。
另外还有一个伪指令和数据对齐有关,就是align(n)(对于不同的编译器,该伪指令格式不同),align(n)表示把紧随其后的内存安排在n字节的边界地址上,注意align(n)这个指令只是指定起始位置,后面怎么安排取决于处理器当前的对齐设置,同时align(n)也不对结构体内的对齐方式起作用,除非该指令位于结构体内部。比如:
align(4)
char a;
int b;
表示a变量必须放到4字节边界地址,b变量该放哪里放哪里。
如果没有align(4),而是这么写
char a;
int b;
则b变量一定是放在4字节边界地址,而a变量就不一定了,具体放哪里取决于内存排列情况。
align(n)虽然对结构体内部的对齐方式无影响,但放在结构体定义前会影响结构体长度,他规定了结构体的最小自然边界(pack是规定结构体的最大自然边界,同时对内部对齐有影响)。
比如
align(8)
struct sta
{
char a;
short b;
};
此时sizeof(struct sta) = 8,如果没有前面的align(8)则sizeof(struct sta) = 4。但是align不影响结构体内部的对齐方式,不管有无align参数,sta.a总是被放在结构体内部的0地址,sta.b总是被放在结构体内的2字节偏移地址(无pack参数下)。当有align(8)指令时,sta.b后面被填充进4个字节。
总结,align(n)仅仅影响紧随其后的一个变量或数据类型定义,当align(n)放在一个变量定义前时,表示将该变量放入n字节边界地址(如果变量是复杂数据类型,则不影响该变量对应的数据类型的长度),当align(n)放在一个复杂数据类型定义前时,表示指定该复杂数据类型的最小自然边界。pack(n)指定所有数据类型的最大自然边界,全局有效。
所以,记住最关键的一点,使用sizeof得到的结构体长度必然是其自然边界的整数倍,所以7楼回答的20是不对的。
PS:以上皆非转载。
-
引用 9 楼 yuan_nice 的回复:
可是我用的不是EVC,是vs2008,而且我的那个开发的sdk不支持EVC也没有Commbox控件,但是能用Wince下的SDK,因为是在Wince上改的
不可能吧 ,我在 vs2005上用过
-
引用 7 楼 garyliu1104 的回复:
ov9650需要重新设置寄存器,cpu支持1280x1024的分辨率,还需BSP中有1280*1024LCD驱动的支持,修改注册表就可以。
这关键是要看你BSP包中的显示驱动支不支持,改注册表是没有用的,因为你改注册表还不是为了让驱动去读你的键值作修改嘛,如果它驱动都没这个功能,你说改了有什么用?
-
贴程序?
-
帮顶,关注