常常是板子出了问题就手足无措,常常要给板子上面信号的时候要用ADS写长长的程序(我用ARM) 常常看到Jflash的程序出错就只知道重起板子,于是我就常常想阅读一下Jflash的源代码 今天,我终于祭起长久不用的Source Insight,建立工程,开始阅读Jflash 所谓打蛇打七寸,读程序先读main 我就从main开始对jflash进行解剖 我读的代码是windows版本的,用VC进行编译,我想Linux版本的应该也差不多,就是要定义一个宏吧,这个问题暂且不关注,先关注程序本身 程序一开始就是一大堆没有注释的变量,也许我是才疏学浅的原因,我硬是看不懂那些变量是做什么用的,暂且跳过吧,先看后面的程序 #ifdef __windows__ //Test operating system, if WinNT or Win2000 then get device driver handle OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) { HANDLE h;
h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(h == INVALID_HANDLE_VALUE) error_out("Couldn't access giveio device"); CloseHandle(h); } #endif 版权信息就不说了,下面就是检测giveio是否已经安装好了 如果没有安装好,就提示Couldn't access giveio device 接着调用test_port()函数,以寻找一个可以用并口 在分析test_port()之前,我们首先对并口编程先进行一些介绍 我们的PC机一般有三个并口,他们的IO地址范围通常是: 0x3bc-0x3be 0x378 -0x37a 0x278-0x27a 在很多电脑里面,通常连接Jtag的并口是以0x378为基地址的并口 可以看到一个并口有三个IO地址,第一个是数据寄存器地址,第二个是控制寄存器地址,第三个是状态寄存器地址。 
|