- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 关于电机控制的测速问题
在三环闭合的电机控制中速度环的闭合过程中需要对正在运行的对象进行测速来进行速度控制,所以这里存在如何进行测速的问题!当然关于这里的处理方法是很多,比如旋变中就自带了速度传感器而输出速度的模拟量,而主控芯片只需对其进行模数转换就可以在系统中运行;当然在工业中采用最多的位置传感器还是旋变,在这种情况下为了节约成本一半采用位置计算的方法进行测速,简单的就是在自己定义的时间内计数脉冲的个数,然后就可以换算成角速度。但是这里存在一个问题:如果电机运行速度很高,那么仅仅在足够长的时间计数脉冲其速度精度就可以保证,但
2010-11-17 22:18:00
3548
原创 ARM920T协处理器以及MMU的分析(三)
同样,在这里我们通过一段MMU的创建来说明MMU的工作方式:下面这段代码是OAL进入kernel Start的一段代码,它也就是wince的页表初始化代码,涉及到两部分内如,分别为二级页表的创建和一级页表的创建。这里的一级页表和前面那个有些不同是TTB发生改变了,也就是说系统进入内核后从新创建了页表。;-------------------------------------------------------------------------------; KernelStart - kernel ma
2010-11-03 03:12:00
1752
原创 ARM920T协处理器以及MMU的分析(二)
2 基于二级页表的地址查询方式 上节讨论了当一级描述符[1:0]为01或者11的时候表示这是一种二级页表查询方式,而一级页表描述符仅仅做为二级页表的索引。下面我们将coarse page与fine page 一起讨论,并且之处他们的区别。 Coarse page 索引了一个二级页表,这个页表描述查询是用大页,小页还是极小页。粗颗粒将1MB的空间划分为256个4KB的空间。如下图所示:其中各个权限的控制位定义如下:同样细颗粒所索引的二级页表也能包括大页,小页和极小页。但是它把1M空间分
2010-11-02 21:59:00
1623
原创 ARM920T协处理器以及MMU的分析(一)
一、ARM中对于存储管理的协处理器CP15CP15可以包含16个32bit的寄存器,分别标记为0~15。但是对于同一个寄存器的物理寄存器可能会对应多个。实际上对于CP15的访问的指令相当简单,只有MCR于MRC。并且这两个指令的格式是相同的。MCR/MRC {} p15, 0 ,,,{,}其中Rd 为ARM的寄存器,CRn和CRm为协处理寄存器。CRn为主,而CRm与opcode_2为辅助寄存器,主要区分同一编号的不同寄存器。如果不需要的情况下CRm为C0,而opcode_2为0;其中c1寄存器的bit0为
2010-11-02 21:48:00
4033
原创 bootload启动流程(补充二)--Eboot磁盘分区及读写函数分析
WriteRegionsToBootMedia ( )的详细分析<br /> 这个函数的原型如下:<br />BOOL WriteRegionsToBootMedia(DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr)<br />{<br /> BYTE nCount;<br /> DWORD dwNumExts;<br /> PXIPCHAIN_SUMMARY pChainInfo = NULL;<br /
2010-10-31 16:53:00
1710
原创 bootload启动流程(补充一)--Eboot磁盘分区及读写函数分析
ReadKernelRegionFromBootMedia( )的详细分析<br />对于这个函数其实主要关于两个重要的函数分析,下面将对这两个函数进行详细的说明:一、BP_OpenPartition的分析<br />hPart = BP_OpenPartition( NEXT_FREE_LOC,<br /> USE_REMAINING_SPACE,<br /> PART_BINFS,<br
2010-10-31 16:49:00
1311
原创 bootload启动流程(四)--Eboot每个函数的详细说明
4)OEMPreDownload ()<br /> 这个函数也是boot里面实现的功能相对少点,但是也不能忽略,很多人在移植boot的时候实际就在这里容易出问题,关键是要搞清除你的一些flag参数。他的工作主要处理下载前的一些准备工作,我们首先看一下原型,然后对其进行分析:<br />DWORD OEMPreDownload()<br />{<br /> char szDeviceName[EDBG_MAX_DEV_NAMELEN];<br /> BOOL fGotJumpImg =
2010-10-31 16:42:00
2468
原创 永磁同步电机工作原理
一、PMSM的基本的构造PMSM(permanent magnet synchronous motor)实际工作是一种交流电机,其定子运行是三项的相差的交流电,而转子则是永磁体。但是这种电机最大的优势就是交流电能量由直流提供,这样就可以对电机进行精确的控制,而且解决了电刷带来的寿命问题。下面对其工作原理进行简单的介绍,如图1,定子的工作电流都为正弦波,而且其三项在任何时候相加都为零,所以PMSM中三项绕组实际上没有中线的,其在电机中示例绕线方法如图2,所以实际上在PMSM中XYZ是连接在一个点的。图1 PM
2010-10-10 19:15:00
41602
1
原创 bootload启动流程(三)--Eboot每个函数的详细说明
由于eboot虽小但是各个功能都具有,所以也是一个比较复杂的过程,下面将对它下面的主要函数进行说明,这里面好多函数都是与nk共用的,所以大多代码并不在eboot下面,而是在public下面。1)KernelRelocate()第一个函数KernelRelocate (pTOC)这个函数实际是将片上一些变量移动到可读写的区域:他的原型就在blcommon.c下面:static BOOL KernelRelocate (ROMHDR *const pTOC){ ULONG loop; COPYent
2010-10-10 18:05:00
3368
原创 bootload启动流程(二)----Eboot的主要流程
当跳转到main()函数之后,开始执行下面的c函数。void main (void){ BootloaderMain (); SPIN_FOREVER;}我们不难发现,实际上main()函数里面只有一个函数执行。而这个BootloaderMain ()是由微软提供的,一般放在public下面:void BootloaderMain (void){ ROMHDR *pRomHdr = NULL; // pTOC for NK image. MUST COPY IT OR CLEANBOO
2010-10-09 19:33:00
1610
原创 bootload启动流程(一)----硬件的初始化和基本配置
EBOOT经过NBOOT引导后,一般会跳转到0x30038000开始执行第一条指令。在我这EBOOT中是先执行目录下2440/Kernel/hal/arm/fw.s。这个在有些系统能够中是setup.s,总之就是从系统ResetHandle开始执行了。下面开始分析这段汇编代码,并且讲述它都做了一些什么工作: ldr r0, = INTMSK ldr r1, = ~BIT_BAT_FLT ; all interrupt disable, nBAT
2010-10-07 15:50:00
2442
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人