潦草的JTAG下载过程分析『原创』

本文详细分析了JTAG下载过程,包括OpenPpt检测端口、初始化JTAG及CPU、S3C6400的ID检测,以及K9f1g08 Flash的编程步骤。通过一系列的寄存器操作和信号控制,实现了对目标设备的程序烧录。
摘要由CSDN通过智能技术生成

潦草的JTAG下载过程分析
===========
第一步
          OpenPpt 检测端口部分
-----------
首先要检查GiveIo,不知道为何?好像跟系统分配的端口地址有关
nt InstallGiveIo(void)
{
    HANDLE h;
    OSVERSIONINFO osvi;
   
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&osvi);
 
    if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
    {
 //OS=NT/2000
 h = CreateFile(".//giveio", GENERIC_READ, 0, NULL,
   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 CloseHandle(h);
 if(h == INVALID_HANDLE_VALUE)
         return 0;
 else
     return 0x2000;
    }
    else
    { //OS=WIN98
 return 0x0098;
    }
}
如果返回为空就说找不到giveio.sys (这个LPT的驱动)


------------
打开并口获取并口号
#define LPT1 0x378 
#define LPT2 0x278 
#define LPT3 0x3bc 

int GetValidPpt(void)//返回值既是端口号
{
 // search for valid parallel port
 _outp(LPT1, 0x55);
 if((int)_inp(LPT1) == 0x55)
     return LPT1;
 
 _outp(LPT2, 0x55);
 if((int)_inp(LPT2) == 0x55)
     return LPT2;
 
 _outp(LPT3, 0x55);
 if((int)_inp(LPT3) == 0x55)
     return LPT3;
 
 return 0; 
}///原理就是先写后读,读出来得是0x55(写的数),就代表该端口开启。说白了还是列举然后挨个试。。。
----------------------
检测端口的最后一步就是趁机再设置一下
#define ECP_ECR      (0x402)
#define ECR_STANDARD     (0x0)
#define ECR_DISnERRORINT    (0x10)
#define ECR_DISDMA     (0x0)
#define ECR_DISSVCINT     (0x4)

void SetPptCompMode(void)
{
  
    _outp((unsigned short)(validPpt+ECP_ECR),ECR_STANDARD | ECR_DISnERRORINT | ECR_DISDMA | ECR_DISSVCINT);
}
validPpt为已获得的端口号,剩下那几个参数一知半解。。

====================
第二步 初始化JTAG & CPU
----
先要 获取下载文件大小()&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值