Jflash源代码分析(一)

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

常常是板子出了问题就手足无措,常常要给板子上面信号的时候要用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地址,第一个是数据寄存器地址,第二个是控制寄存器地址,第三个是状态寄存器地址。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有