电子工程专辑互动社区>自由讨论>嵌入式系统专区>【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白
大家在做什么
作者 问题:

【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白

发布时间:2011-6-30 上午10:10

作者: ba_xia

等级: 初入江湖

积分: 125分

发帖数: 3次

网站总积分: 125分

经验值: 0.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
OK6410使用VB.NET控制ARM11开发板LED程序
我是一个从单片机思想转变到ARM上来的,一开始很不习惯使用ARM的开发方式,主要是自己对嵌入式的架构理解起来不那么快,受单片机开发影响,P0=0;即可点亮LED灯的影响,一直没太搞懂arm上LED驱动是怎么回事,总想拿VB.NET写个程序能控制板子上的小灯。借鉴了一下别人的成果,写了这个小程序,希望对像我这样在门口的朋友有个指导意义。另有几个概念我梳理下,希望高手指点一下我的思路是否正确。
1.?对于跑WINCE系统的arm板原则上不允许客户的C程序直接访问物理地址或者虚拟地址
2.?对于用于的C程序想访问设备的话,系统里面必须要有驱动,驱动应该作为内核级程序运行的
3.?想点亮LED时应用程序必须通过方法去掉系统api,然后由系统对应去打开驱动,再利用驱动里的方法对应去操作寄存器
4.?送数取数
5.?为什么这个程序既能跑在wince下又能跑在X86下呢???请高手指点

Imports?System
Imports?System.Collections.Generic
Imports?System.ComponentModel
Imports?System.Text
Imports?System.Drawing
Imports?System.Runtime.InteropServices
Public?Class?Form1
????Const?OPEN_EXISTING?=?3
????Const?GENERIC_READ?=?&H80000000
????Const?GENERIC_WRITE?=?&H40000000
????Const?INVALID_HANDLE_VALUE?=?-1

????Const?LED_1_ON?=?&H4001060
????Const?LED_2_ON?=?&H4001070
????Const?LED_3_ON?=?&H4001080
????Const?LED_4_ON?=?&H4001090

????Const?LED_1_OFF?=?&H4001061
????Const?LED_2_OFF?=?&H4001071
????Const?LED_3_OFF?=?&H4001081
????Const?LED_4_OFF?=?&H4001091

????Private?hPort?As?IntPtr
????Declare?Function?CreateFile?Lib?"coredll.dll"?Alias?"CreateFile"?(ByVal?lpFileName?As?String,?ByVal?dwDesiredAccess?As?Long,?ByVal?dwShareMode?As?Long,?ByVal?lpSecurityAttributes?As?IntPtr,?ByVal?dwCreationDisposition?As?Long,?ByVal?dwFlagsAndAttributes?As?Long,?ByVal?hTemplateFile?As?IntPtr)?As?IntPtr
????Declare?Function?DeviceIoControl?Lib?"coredll.dll"?Alias?"DeviceIoControl"?(ByVal?hDevice?As?System.IntPtr,?ByVal?dwIoControlCode?As?Long,?ByVal?lpInBuffer()?As?Byte,?ByVal?nInBufferSize?As?Long,?ByVal?lpOutBuffer()?As?Byte,?ByVal?nOutBufferSize?As?Long,?ByVal?lpBytesReturned?As?Long,?ByVal?lpOverlapped?As?System.IntPtr)?As?Boolean

????Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load

????End?Sub

????Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_1_ON,?led1,?0,?pout,?0,?0,?IntPtr.Zero)?????'在这里修改LED_1_ON就可以对所有的LED进行操作
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button2_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button2.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_1_OFF,?led1,?0,?pout,?0,?0,?IntPtr.Zero)
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button3_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button3.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_2_OFF,?led1,?0,?pout,?0,?0,?IntPtr.Zero)
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button4_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button4.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_3_OFF,?led1,?0,?pout,?0,?0,?IntPtr.Zero)
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button5_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button5.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_4_OFF,?led1,?0,?pout,?0,?0,?IntPtr.Zero)
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button6_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button6.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_2_ON,?led1,?0,?pout,?0,?0,?IntPtr.Zero)?????'在这里修改LED_1_ON就可以对所有的LED进行操作
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button7_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button7.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_3_ON,?led1,?0,?pout,?0,?0,?IntPtr.Zero)?????'在这里修改LED_1_ON就可以对所有的LED进行操作
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub

????Private?Sub?Button8_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button8.Click
????????Try
????????????hPort?=?CreateFile("LED1:",?GENERIC_READ?Or?GENERIC_WRITE,?0,?IntPtr.Zero,?OPEN_EXISTING,?0,?IntPtr.Zero)
????????????Dim?led1()?As?Byte?=?{0}
????????????Dim?pout(10)?As?Byte
????????????DeviceIoControl(hPort,?LED_4_ON,?led1,?0,?pout,?0,?0,?IntPtr.Zero)?????'在这里修改LED_1_ON就可以对所有的LED进行操作
????????Catch?ex?As?Exception
????????????MsgBox("操作LED失败")
????????End?Try
????End?Sub
End?Class
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0) 有新回复时发送邮件通知
电子工程专辑用漫画展示的编程语言学习曲线
第1楼

回复主题:【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白

发布时间:2011-6-30 下午5:36

作者: EmmaLu

等级: 武林泰斗

积分: 25669分

发帖数: 1579次

网站总积分: 26087分

经验值: 2441.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
路过,帮顶,,,,
一个大学生完成电子设计的全过程 值得一读 (下载2666 次) 书上学不到的~某高手谈开关电源设计心得,经典~ (下载2580 次)
运放和比较器的根本区别 (下载2242 次) 焊接工艺(花了很多时间整理,图文并茂) (下载2674 次)
电子电路制作大全[PDF共6本] (下载128277 次) WiFi模块全总结 (下载4332 次)
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)
电子工程专辑光格子:160亿年仅误差1秒的时钟
第2楼 回复主题:【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白 发布时间:2011-7-5 上午8:47

作者: zwbmln1314

等级: 白银大侠

积分: 2539分

发帖数: 230次

网站总积分: 2539分

经验值: 55.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
路过,学习一下!
开关电源设计制作大全(已更新为免积分下载)--绝对精华 (下载20794 次) 硬件工程师手册 (下载3523 次)
【转】最完整 MTK方案套片datasheet下载全集【2】 (下载8276 次) 常用电源设计技巧(含电路图) (下载6887 次)
电路设计技术与技巧 342页(已更新为免费的) (下载49683 次) 一本很好的通信原理教程 (下载17257 次)
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)
电子工程专辑特斯拉中国销售业绩不佳,导致高管频频更换
第3楼 回复主题:【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白 发布时间:2011-7-5 上午11:02

作者: SkyHeds

等级: 学有小成

积分: 510分

发帖数: 156次

网站总积分: 512分

经验值: 2.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
共同学习,希望高手点评
电容的介绍和深入(华为内部资料) (下载5613 次) 自动控制原理 (下载1915 次)
华为模拟电路设计全册 (下载2259 次) 音频功率放大器设计手册(中文电子书) (下载8833 次)
51单片机各类源程序集锦 (下载3669 次) 玩转示波器从这里开始(示波器原理、使用技巧总结下载) (下载1491 次)
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)
电子工程专辑“戏路”越来越广:无人机追踪石油泄漏
第4楼 回复主题:【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白 发布时间:2011-7-6 下午1:29

作者: 江口

等级: 初入江湖

积分: 71分

发帖数: 53次

网站总积分: 71分

经验值: 0.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
期待高手解答。
网友推荐
《32位MCU开发全攻略》(上),免费下载中!????《32位MCU开发全攻略》(下),免费下载中!????
技术人才离职原因分析:一个技术管理者的总结????陪美国同事参观金立手机工厂????

引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)
电子工程专辑“戏路”越来越广:无人机追踪石油泄漏
第5楼 回复主题:【请前辈们指点一二】初学ARM11,自己在OK6410上写了一个LED程序,但有几个地方不太明白 发布时间:2011-7-8 上午11:00

作者: ytfdhb

等级: 武林新秀

积分: 728分

发帖数: 72次

网站总积分: 802分

经验值: 1474.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
不错,学习下^_^
网友推荐
一位工程师的一周生活写照????红米Note拆解:多用国产芯片 内部设计获赞????
8位处理器已死?????拆解谷歌Nexus 6P:内部与5X不像兄弟,看华为...????

引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)

?
快速回复
用户名:?
美国的游客?????? (您将以游客身份发表,请登陆 | 注册 ) ?
标题: * 你还可以输入80
评论: * 你还可以输入10000
分享到: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
验证码: ?*?
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回嵌入式系统专区 | 返回自由讨论
本论坛仅陈述专家或个人观点,并不代表电子工程专辑网站立场。
返回论坛页首
有问题请反馈