tsanghy

    1. 示波器才是硬道理 35/9172 stm32/stm8 2010-10-18
                                       用好示波器应该是硬件工程师最基本的素质
    2. stm8s输出比较已——反复思考 5/3930 stm32/stm8 2010-07-20
                                       楼主运行这段程序出现了什么问题
    3. 修改platform.reg要重新sysgen吗? 25/6995 嵌入式系统 2010-06-22
      6.0 手动复制,make run time image 或者 build current BSP and subprojects
    4. section lma overlaps previous sections 4/6027 嵌入式系统 2010-06-19
      linux下面编译的啊 用的mips的交叉工具链啊
    5. 还没有开始搞啊,汗。你这样提问没有用的,我在www.ouravr.com都回复你了, 我讲了要修改的地方了,你咋不做呢,别人帮你包办不太可能的啊。
    6. linux下关于中断的驱动. 求助求助 6/5493 Linux开发 2010-05-27
      问题解决:   free_irqs 失败. 因为dev_id参数传递错误.   编译的时候出现了一个警告, 就是关于这个内容. 现在问题解决, 警告也没有了.  可以rmmod, 然后再insmod  呵呵.  多谢各位.
    7. 嵌入式培训哪个好? 26/11361 嵌入式系统 2010-05-26
      感觉到了菜市场.........广告太多了........ 个人认为去买个实验板......找份置位低点的工作开始做.....
    8. 嵌入式培训哪个好? 26/11361 嵌入式系统 2010-05-10
      武汉华嵌挺不错的,听说那里的学员的口碑很不错!
    9. 哪些寄存器提供偏移地址 1/3667 嵌入式系统 2010-04-16
      SP,BP,SI,DI四个16位寄存器可以象数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用.此外,它们更经常的用途是在存储器寻址时,提供偏移地址.因此,它们可称为指针或变址寄存器.
    10. 有谁能介绍下数控编程 8/3666 嵌入式系统 2010-04-02
      我就是搞数控的。 不知道你想问什么、
    11. 请问wince驱动中断问题 3/2938 嵌入式系统 2010-01-27
      建议跟踪调试
    12. 蓝牙驱动选择问题 7/3637 嵌入式系统 2010-01-25
      我们刚做过WinCE5下的蓝牙驱动,芯片用的CSR的BC5,但驱动没有用WinCE的,自己做了一个接收、分析串口的驱动。真正的代码都在蓝牙芯片里面,我们的驱动就是发一些串口命令给它。
    13. 来挣积分 就可以下了
    14. 难道驱动程序里面不让用MFC 库吗? 22/8385 嵌入式系统 2010-01-13
      MFC是应用程序开发 微软的一个框架 怎么可以用到驱动里面呢
    15. 代码在这里: typedef struct _HW_DEVICE_EXTENSION { //省略原来部分,下面这些是我添加的,最后一行是DPC对象         PULONG                                        BAR0;         BYTE                                        FrameCount;         PHW_STREAM_REQUEST_BLOCK        CurrentSRB;         PUCHAR                                        CurrentVirtualAddress;         ULONG                                        CurrentCount;         KDPC                                        DpcForIsr; } HW_DEVICE_EXTENSION, *PHW_DEVICE_EXTENSION; BOOLEAN        STREAMAPI HwInitialize ( IN OUT PHW_STREAM_REQUEST_BLOCK pSrb ) {     STREAM_PHYSICAL_ADDRESS     adr;     ULONG                       Size;     PUCHAR                      pDmaBuf;     int                         j;                                                                        PPORT_CONFIGURATION_INFORMATION ConfigInfo = pSrb->CommandData.ConfigInfo;     PHW_DEVICE_EXTENSION pHwDevExt = (PHW_DEVICE_EXTENSION)ConfigInfo->HwDeviceExtension;     DbgLogInfo(("Testcap: HwInitialize()\n")); /*                有无硬件无所谓     if (ConfigInfo->NumberOfAccessRanges != 0)         {         DbgLogError(("Testcap: illegal config info\n"));         pSrb->Status = STATUS_NO_SUCH_DEVICE;         return (FALSE);     } */ //        ReadCfg();     if (ConfigInfo->NumberOfAccessRanges != 0)         {         pHwDevExt->BAR0 = (PULONG)(ULONG_PTR)(ConfigInfo->AccessRanges[0].RangeStart.LowPart); //        pHwDevExt->BAR2 = (PULONG)(ULONG_PTR)(ConfigInfo->AccessRanges[2].RangeStart.LowPart);                 pHwDevExt->ioBaseLocal = (PULONG)(ULONG_PTR)(ConfigInfo->AccessRanges[1].RangeStart.LowPart);     }     DbgLogInfo(("TestCap: Number of access ranges = %lx\n", ConfigInfo->NumberOfAccessRanges));     DbgLogInfo(("TestCap: Memory Range = %lx\n", pHwDevExt->ioBaseLocal));     DbgLogInfo(("TestCap: IRQ = %lx\n", ConfigInfo->BusInterruptLevel));     pHwDevExt->Irq  = (USHORT)(ConfigInfo->BusInterruptLevel);     ConfigInfo->StreamDescriptorSize = sizeof (HW_STREAM_HEADER) + DRIVER_STREAM_COUNT * sizeof (HW_STREAM_INFORMATION);     pDmaBuf = StreamClassGetDmaBuffer(pHwDevExt);     adr = StreamClassGetPhysicalAddress(pHwDevExt, NULL, pDmaBuf, DmaBuffer, &Size);     // Init VideoProcAmp properties     pHwDevExt->Brightness = BrightnessDefault;     pHwDevExt->BrightnessFlags = KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;     pHwDevExt->Contrast = ContrastDefault;     pHwDevExt->ContrastFlags = KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;     pHwDevExt->ColorEnable = ColorEnableDefault;     pHwDevExt->ColorEnableFlags = KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL;     // Init CameraControl properties     pHwDevExt->Focus = FocusDefault;     pHwDevExt->FocusFlags = KSPROPERTY_CAMERACONTROL_FLAGS_AUTO;     pHwDevExt->Zoom = ZoomDefault;     pHwDevExt->ZoomFlags = KSPROPERTY_CAMERACONTROL_FLAGS_AUTO;     // Init VideoControl properties     pHwDevExt->VideoControlMode = 0;     // Init VideoCompression properties     pHwDevExt->CompressionSettings.CompressionKeyFrameRate = 15;     pHwDevExt->CompressionSettings.CompressionPFramesPerKeyFrame = 3;     pHwDevExt->CompressionSettings.CompressionQuality = 5000;     pHwDevExt->PDO = ConfigInfo->RealPhysicalDeviceObject;     pHwDevExt->FDO = ConfigInfo->ClassDeviceObject;     DbgLogInfo(("TestCap: Physical Device Object = %lx\n", pHwDevExt->PDO));     for (j = 0; j < MAX_TESTCAP_STREAMS; j++)         {         // For each stream, maintain a separate queue for data and control         InitializeListHead (&pHwDevExt->StreamSRBList[j]);         InitializeListHead (&pHwDevExt->StreamControlSRBList[j]);         KeInitializeSpinLock (&pHwDevExt->StreamSRBSpinLock[j]);         pHwDevExt->StreamSRBListSize[j] = 0;     }     // Init ProtectionStatus     pHwDevExt->ProtectionStatus = 0;     // The following allows multiple instance of identical hardware     // to be installed.  GlobalDriverMediumInstanceCount is set in the Medium.Id field.     pHwDevExt->DriverMediumInstanceCount = GlobalDriverMediumInstanceCount++;         /****************2009年10月21日初始化IO定时器、DPC和FrameCount***************/         IoInitializeTimer( pHwDevExt->PDO, OnTimer, &(pHwDevExt->FrameCount) );         pHwDevExt->FrameCount = 0;         [color=#FF0000]KeInitializeDpc( &(pHwDevExt->DpcForIsr), DpcForIsrRoutine, pHwDevExt );[/color]//此句初始化DPC对象     DbgLogInfo(("TestCap: Exit, HwInitialize()\n"));     pSrb->Status = STATUS_SUCCESS;     return (TRUE); } BOOLEAN HwInterrupt( IN PHW_DEVICE_EXTENSION  pHwDevExt ) {         const        int        Count = 192;         PHYSICAL_ADDRESS                address;         BOOLEAN        fMyIRQ = FALSE;         ULONG        InterruptFlag;         ULONG                        Length;         ULONG                        BytesLeave;         InterruptFlag = READ_REGISTER_ULONG( pHwDevExt->BAR0+0X10/4 );         if(InterruptFlag)         {                 WRITE_REGISTER_ULONG( pHwDevExt->BAR0+0X10/4, 0 );                 fMyIRQ = TRUE;                                 if( pHwDevExt->CurrentCount )                                 { /*                                        if( InterruptFlag&0x00000010 )                                         {                                                 pHwDevExt->VCount = 1;                                                 //将地址修改为最后一行 即添加768*767                                                 address = StreamClassGetPhysicalAddress( pHwDevExt, pHwDevExt->CurrentSRB,                                                                                 pHwDevExt->CurrentVirtualAddress + 768*767, SRBDataBuffer, &Length ); //                                                address = MmGetPhysicalAddress ( pHwDevExt->CurrentVirtualAddress );                                                 WRITE_REGISTER_ULONG( pHwDevExt->BAR0+10, address.LowPart );                                                 if( Length < 768 )                                                 {                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, Length/4 );                                                         BytesLeave = 768 - Length;                                                         address = StreamClassGetPhysicalAddress( pHwDevExt, pHwDevExt->CurrentSRB,                                                                                 pHwDevExt->CurrentVirtualAddress+Length + 768*767,                                                                                 SRBDataBuffer, &Length );                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+10, address.LowPart );                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, BytesLeave/4);                                                 }                                                 else                                                 {                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, Count );                                                 }                                                        pHwDevExt->CurrentCount -= Count * 4;                                         }                                         else                                         {                                                 if(        pHwDevExt->VCount )                                                 {                                                         address = StreamClassGetPhysicalAddress( pHwDevExt, pHwDevExt->CurrentSRB,                                                                                         pHwDevExt->CurrentVirtualAddress + 768 * (767-pHwDevExt->VCount),                                                                                         SRBDataBuffer, &Length ); //                                                        address = MmGetPhysicalAddress ( (pHwDevExt->CurrentVirtualAddress) + 768*(pHwDevExt->VCount) );                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+10, address.LowPart );                                                         if( Length < 768 )                                                         {                                                                 WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, Length/4 );                                                                 BytesLeave = 768 - Length;                                                                 address = StreamClassGetPhysicalAddress( pHwDevExt, pHwDevExt->CurrentSRB,                                                                                         pHwDevExt->CurrentVirtualAddress + 768 * (767-pHwDevExt->VCount)+Length,                                                                                         SRBDataBuffer, &Length );                                                                 WRITE_REGISTER_ULONG( pHwDevExt->BAR0+10, address.LowPart );                                                                 WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, BytesLeave/4);                                                         }                                                         else                                                         {                                                                 WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, Count );                                                         }                                                                pHwDevExt->CurrentCount -= Count * 4;                                                         ++pHwDevExt->VCount;                                                 }                                                 else                                                 {                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+10, pHwDevExt->DMABaseAddress );                                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, Count);                                                         pHwDevExt->CurrentCount -= Count * 4;                                                 } //                                                [color=#FF0000]IoRequestDpc( pHwDevExt->FDO, pHwDevExt->CurrentSRB->Irp, NULL);[/color]//此处调用DPC对象                                         } */                                        WRITE_REGISTER_ULONG( pHwDevExt->BAR0+10, pHwDevExt->DMABaseAddress+4 );                                         WRITE_REGISTER_ULONG( pHwDevExt->BAR0+12, 128 );                                         pHwDevExt->CurrentCount -= 768;                                 }                                 else                                 {                                         if(pHwDevExt->CurrentSRB)                                                 CompleteStreamSRB ( pHwDevExt->CurrentSRB );                                         pHwDevExt->CurrentSRB = NULL;                                         pHwDevExt->CurrentVirtualAddress = NULL;                                         pHwDevExt->DMABaseAddress = 0;                                 }         }         return        fMyIRQ; } 复制代码
    16.                                  没有为他单独取名字,就是个模块嘛
    17. bsl不能加密
    18. 休眠模式设置哪个寄存器呀?我发现协处理器也要I2C通信,有点麻烦。我们现在的单板休眠了以后偶尔也会出现无法唤醒的问题,硬件同事说可能和后备电池有关系。你看看放段时间是不是又可以起来了。
    19. wo 顶啊。
    20. wince启动时出错 12/5513 嵌入式系统 2009-08-19
      是display driver 的问题,今天在os中添加了LCD的driver就好了。 感谢大家的关注。

最近访客

< 1/1 >

统计信息

已有156人来访过

  • 芯积分:--
  • 好友:--
  • 主题:5
  • 回复:59

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言