社区
嵌入开发(WinCE)
帖子详情
S3C2440写一个通过USB下载文件到nand flash的裸奔程序
「已注销」
2011-01-08 01:55:53
求思路,如何配合DNW来编写程序?
...全文
439
12
打赏
收藏
S3C2440写一个通过USB下载文件到nand flash的裸奔程序
求思路,如何配合DNW来编写程序?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mhl920
2011-04-08
打赏
举报
回复
这是我找到的一个USB中断服务程序 希望对楼主有帮助 我写的连中断都进步去 郁闷死了
祝楼主好运
mhl920
2011-04-08
打赏
举报
回复
数据传输:
一般采用中断传输模式,故进入中断后先判断中断类型,再具体执行中断类型的服务程序。如下程序:
void __irq USB_INT()
{
U8 usb_Int, Ep_Int;
U8 Index=rINDEX_REG; //保存索引寄存器值(现场保护)
usb_Int=rUSB_INT_REG; //保存中断标志寄存器
Ep_Int=rEP_INT_REG;
if(usb_Int&1) //总线上超过3ms没有活动信号引起中断
{
rUSB_INT_REG=1; //清除中断标志位
}
if(usb_Int&2) rUSB_INT_REG=2; //恢复引起的中断
if(usb_Int&4) //接收到复位信号引起的中断
{
USB_reset(); //重新配置USB设备
rUSB_INT_REG=4; //复位USB后清除复位中断
PrepareEp1Fifo(); //准备发送数据
}
if(Ep_Int&1) //端点0中断
{
rEP_INT_REG=1;
Ep0Handler(); //进入控制传输中断处理程序
}
if(Ep_Int&2)
{
rEP_INT_REG=2;
Ep1Handler(); //进入Ep1中断处理程序(BULK IN)
}
if(Ep_Int&4) rEP_INT_REG=4;
if(Ep_Int&8)
{
rEP_INT_REG=8;
Ep3Handler(); //进入Ep3中断处理程序(BULK OUT)
}
if(Ep_Int&0x10) rEP_INT_REG=0x10;
ClearPending(BIT_USBD); //USB设备中断处理完毕,清除中断标志位
rINDEX_REG=Index; //恢复索引寄存器原来的值(恢复现场)
}
其中控制传输中断服务程序(Ep0Handler())处理主机向USB设备发出命令的中断。在此程序中,要分别对接收命令过程中出现的有效命令(即令牌包)写入(包括对命令内容的处理)、命令写入出错引起的停止、命令传输结束进行处理。
mhl920
2011-04-08
打赏
举报
回复
楼主加油啊 楼主比我强多了 我连中断都进不去 郁闷死了
ffeige1984
2011-01-20
打赏
举报
回复
参考下DNW驱动,和FL2440的程序部分。
「已注销」
2011-01-16
打赏
举报
回复
又有最新进展了,不论我怎么清除中断标志寄存器,总是无法退出USBD中断,我就索性加上了几个函数,主要是USB寄存器初始化的和判断HOST所发送的请求的语句,结果,在中断有限次数后就不再中断。看来,USB初始化是一定要提前运行,才能保证,USB的正常工作,我怀疑这里的频率设置有问题。还待进一步研究。
loongembedded
2011-01-15
打赏
举报
回复
期待楼主早日解决分享一下,加油!
loongembedded
2011-01-15
打赏
举报
回复
rINTMSK = 0xedffffe0
这条指令是在中断部分还是USB Device驱动部分的啊?
「已注销」
2011-01-15
打赏
举报
回复
我找到了一些猫腻了,首先我把USBD的中断打开,通过JTAGE口下载到板子上,一定会在rINTMSK = 0xedffffe0 这里卡住,但是如果我把开发板的电源关掉,再开启,在reset一下,就可以工作正常,能成功进入USBD中断,不过USBD中断会一直发生,
rSRCPND = (0x1<<25);
rINTPND = rINTPND;
按键的中断这样就可以清除,USBD的貌似就不行。
请有经验的人给点思路,谢谢。
「已注销」
2011-01-15
打赏
举报
回复
[Quote=引用 4 楼 loongembedded 的回复:]
rINTMSK = 0xedffffe0
这条指令是在中断部分还是USB Device驱动部分的啊?
[/Quote]
是在端口初始化部分,是USB Device驱动部分。
很奇怪,我就纳闷了怎么就是开不了中断呢,而且就光USBD的中断开不了,USBH都可以开,难道是那个 Pin 没设置好? GPG12 的好像是USB 的soft link 不知道有没有影响。我现在把GPG12设置成output , 寄存器全写1, 上拉电阻关。 高人给点思路吧,谢谢。
「已注销」
2011-01-15
打赏
举报
回复
看来一切都得从中断开始做起
但是我遇到了一个问题,为什么我只要开USBD的中断 rINTMSK = 0xedffffe0; 开发板就卡住。这条指令怎么也执行不了。
UN_ChairMan
2011-01-09
打赏
举报
回复
飞凌嵌入式的TE2440开发板的bootloader程序可做参考。跟裸奔差不多
loongembedded
2011-01-08
打赏
举报
回复
楼主从这个链接下载http://download.csdn.net/source/559176代码看看。
s3c2440
裸奔
之结束语
其中,限于手头没有相关硬件资源,SPI、UART的红外模式、AC97没有涉及,而
USB
设备控制器部分,由于还要用到上位机的驱动以及应用
程序
的开发,涉及的内容较多,已超出了“
裸奔
”的范围,因此也没有予以介绍,还请大家...
S3C2440
裸机
程序
之音频
mini2440之Main分析2012-03-17 20:51:29 分类:嵌入式 /****************************************************************NAME: u2440mon.cDESC: u2440mon entry point,menu,downloadHISTORY:Mar....
Mini2440启动代码的编
写
(
裸奔
)
启动代码是系统上电或复位以后运行的第一段代码,它的作用是在用户
程序
运行之前对系统硬件及软件运行环境进行必要的初始化并在最后使
程序
跳转到用户
程序
,它直接面对ARM处理器内核及硬件控制器进行编程,所执行的...
浅谈ARM的
裸奔
调试
之所以
写
一篇blog,是因为最近调试了一块ARM板,基于S3C6410的,但是我们把原来的M-DDR DRAM和
Nan
d
flash
全部都换掉了,硬件做了不小的改动。以前也做过类似的裸板调试,从ARM7到ARM9,再到现在的ARM11。今天就来
写
一...
MDK + Jlink + SDRAM
裸奔
2440教程
DK + Jlink + SDRAM
裸奔
2440教程 1、背景 很多人学习嵌入式编程都是从裸机开始的(我个人也是)。这并不是偶然,想要零基础入门嵌入式开发,玩转裸机绝对是最好的入手点。这样至少可以培养以下必备...
嵌入开发(WinCE)
19,504
社区成员
41,569
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章