标签:android style log com http it si 使用 la 实验手册上说了安装DNW驱动,这个软件我没有细查,不过根据它的功能,它用的是USB上传文件到开发板,所以比那种用串口上传文件要方便很多。 USB转串口支持驱动之前已经安装了,现在为了支持USB传输文件当然也要安装驱动,安装时有些文档里面没有说清楚,这里说下。
? ? 还是把例程代码写一遍吧,led裸板实验一共有三个文件
? ? start.S需要完成的事情有 首先关看门狗(尽管IROM已经这样做了?),看门狗的作用还是不太清楚? 首先在手册中搜watchdog,找到watchdog这章,大概浏览下,然后找到这章
定位到26章看门狗定时器,大概浏览一下overview
对于硬件的操作无非是操作寄存器,寄存器就好比面向对象中的接口API,只不过这里封装的是硬件而已。通常而言,寄存器无非两大类:控制寄存器和数据寄存器,4412中的设备寄存器一般都是32位,然后具体的设备还有额外的寄存器。此处我们需要关闭看门狗,所以能够想到应该到控制寄存器里面找对应的位去设置一下。
这里呢,我们把控制器寄存器全部置零,也就是关闭所以可以控制的功能,反正暂时不要用,代码如下: 我们只要把Reset和Interrupt关闭就可以了,这样就无法产生复位信号或者中断信号,当然这里把所有位都置零也没问题:
关完了看门狗,接下来就是打开icache
启动了icache,这样取指令命令就快了,这次的裸机测试程序的电灯程序是C语言写的,所以要设置栈空间(也就是设置栈指针)
? ? 好了,设置完了栈空间,就可以调到C程序那里去执行了:
下面来实现led_blink函数,可见这里不需要main函数,原因是这是逻辑程序,而对mian函数的要求是C编译器的要求。 第一步首先找到led的原理图,因为有了原理图,才能知道led连接到了哪个引脚上,然后才能控制这个引脚,从而控制led。 下面是led的原理图:
从上图可以知道连接led的引脚网络标号,然后通过网络标号找到和连接器相连的引脚:
? ?
然后再通过连接器上的网络标号到核心板原理图pdf上去找对应的处理器的引脚:
? ?
? ? 好了现在知道了处理器引脚名称了,接着到4412手册pdf上搜到这两个引脚相关的寄存器,然后控制即可。 这里的话控制很简单,只要先设置为输出,然后输出高电平就点亮,输出低电平就熄灭即可:
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ? 下面写流水灯的C程序:
接下来是Makefile的编写:
接下来就是执行了,但是出现了如下错误:
不知道怎么回事,上次还有用的。不管了,既然没检测到,肯定是路径没添加,所以添加下:
添加:
使 .bashrc生效
再次运行make,OK! 执行成功:
? ? 接下来就是把led.bin下载到开发板上:
? ? 说明: 得到了led.bin,根据 裸机教程.pdf ,通过现成的uboot功能,把led.bin下载到了0x40008000这个地址,不是太清楚这个地址是干嘛用的。原以为程序当然是加载到内存中运行的,但是我不知道这里的意思是什么?是不是把程序搬到了这个地址0x40008000,然后还要搬到再搬到内存里面去执行?还是说0x4000800本来就是内存地址也就是下载到了DRAM上?不过按道理说,应该不是直接下载到内存上吧,应该是先下载到eMMC上吧。 ? ? 我看了4412手册描述存储映射的那章:
但是不太清楚这个DMC到底是个什么地址,而且也没有找到DDR的映射区域,不知道怎么回事??? 用折半法试了下,只有0x40000000到0x5FFFFF0A这段地址段可以通过dnw.exe把led.bin下载过去,led.bin占232字节(指的是教程提供的led.bin,自己的led.bin大小不是这个)。也就是大概511M的空间,我奇怪的是为什么其他区域不可以呢,毕竟这块板子的eMMC有4G的空间???不明所以。 ? ?
0x5ffffe22+0xe8=0x5FFFFF0A 0x5FFFFF0A-0x4000000=0x1FFFFF0A=536870666(10) 536870666B/1024/1024=511.9998 512MB=536870912B ? ? 先把当下的事情干好,想一下是不是。 ? ? lmosem-exynos4412:iTOP-4412裸机开发环境 标签:android style log com http it si 使用 la 原文:http://www.cnblogs.com/dcscodelife/p/5790977.html |
|