eyxnos4412 裸机程序
文章平均质量分 82
eshing
这个作者很懒,什么都没留下…
展开
-
tiny4412 裸机程序 一、说明
首先、我想说明为什么我写这个文档?我自己想学点东西,过于求成,又过于自信,直接买了Tiny4412的板子,但网上关于4412的资料太少,我一直没办法啃动,只能尽可能找来各种相关资料进行参考分析。我想在U-Boot程序中加入LCD显示功能,但始终都没有正常点亮LCD,放弃的心都有了,后来在网上找到一份《Linux平台下Mini210S裸机程序开发指南》的文档,我觉得写的挺清楚的,我也只能二一点了,先原创 2014-07-05 23:27:24 · 4165 阅读 · 1 评论 -
tiny4412 裸机程序 二、汇编点亮LED灯
一、控制原理说明首先查看《Tiny4412_1306_sch.pdf》原理图,找到我们想控制的LED灯,如下图2-1所示。图2-1、LED灯电路原理图如上图1可知,PCB板上有4个LED灯可受IO控制的,控制它们四个引脚分别是GPM4_0~ GPM4_3,由原理可知,当IO引脚为高电平时,LED灯灭,当IO引脚为低电平时LED亮。我们要做的工作就是设置GPM4_0~ GPM原创 2014-07-05 23:34:50 · 6745 阅读 · 9 评论 -
tiny4412 裸机程序 八、重定位到DRAM及LCD实验
一、实验原理上一章已经解释的很清楚了,如何将所要运行的user_bin程序定位到DRAM中,这一章要进行重定位到DRAM后运行LCD程序,实际上一章中BL2中程序可以不用改动,直接重写我们的USER目录下的程序即可,将USER目录下的LED灯闪烁程序用LCD程序替换就行,最后编译出的程序名字也叫user_bin.bin即可,这样也可以用上一章中的fast_fuse.sh进行烧写到SD卡运行。原创 2014-07-06 23:56:39 · 4836 阅读 · 1 评论 -
tiny4412 裸机程序 六、重定位代码到IRAM+0x8000
一、重定向对于程序而言,我们需要理解两个概念,一是程序当前所处的地址,即程序在运行时,所处的当前地址;二是程序的链接地址,即程序运行时应该位于的运行地址。编译程序时,可以指定程序的链接地址。对于Tiny4412而言,启动时只会从MMC/sd等启动设备中拷贝前16K的代码到IRAM中,那么当我们的程序超过16K怎么办?那就需要我们在前16K的代码中将整个程序完完整整地拷贝到DRAM等其他更大存储原创 2014-07-05 23:53:54 · 2076 阅读 · 0 评论 -
tiny4412 裸机程序 七、重定位代码到DRAM
一、关于DRAM上一章我们讲解了如何对代码进行重定位,但是将代码重定位到只有256K IRAM中作用不大。正确的做法是将代码重定位到容量更大的主存中,即DRAM。Exynos4412中有两个独立的DRAM控制器,分别叫DMC0和DMC1。DMC0和DMC1分别支持最大1.5G的DRAM,它们都支持DDR2/DDR3和LPDDR2等,512 Mb, 1 Gb, 2 Gb, 4 Gb and原创 2014-07-05 23:58:14 · 3959 阅读 · 0 评论 -
tiny4412 裸机程序 九、串口排查驱动原因及字符图片显示
一、实验原理大家可能会有疑问,不是在BL2目录中的mem_init_tiny4412.S实现了串口初始化了,且也有串口输出函数,要不然怎么串口调试助手上怎么会有打印信息呢,这里为什么还要重新初始化?其实我觉得也可以不用重新初始化,但至少也要实现Printf()这个标准函数里要调用的串口输出函数吧,因为初始化工作在时钟没有改变的情况下,可以只初始化一次,但是到LCD初始化这一步时,CPU已经重定原创 2014-07-07 00:14:33 · 2820 阅读 · 2 评论 -
tiny4412 裸机程序 四、设置栈和C语言点亮LED
一、为什么调用C函数要设置栈1. 栈的整体作用1) 保存现场;2) 传递参数:汇编代码调用C函数时,需传递参数;3) 保存临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量;2. 详细解释1) 保存现场现场,意思就相当于案发现场,总有一些现场的情况,要记录下来的,否则被别人破坏掉之后,你就无法恢复现场了。而此处说的现场,就是指CPU运行的时候原创 2014-07-05 23:48:17 · 2374 阅读 · 5 评论 -
tiny4412 裸机程序 三、关闭看门狗和调用C程序
一、原理说明上是章中大家可能有会觉得奇怪,CPU不是有看门狗嘛?为什么CPU没有复位,程序还能正常工作呢?查看Eyxnos4412的手册,第5章简要的说明了其启动顺序,如下图3-1所示是Eyxnos4412启动顺序图,这里虽然没有说的很清楚,但内部iROM和BL1程序中是起一些初始化时钟,DRAM等工作的,其也可能已经使看门狗不工作了。所以上一章程序中,我们也没有人为的关闭看门狗,程序也能原创 2014-07-05 23:38:24 · 3140 阅读 · 0 评论 -
tiny4412 裸机程序 五、控制icache
一、什么是cache基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供CPU在一段时间内使用,这对提高程序的运行速度有很大的作用。这类介于主存和CPU之间的高速小容量存储器称作高速cache。比较常见的cache包括icache和dcache。icache的使用比较简单,系统刚上电时,icac原创 2014-07-05 23:50:16 · 1914 阅读 · 1 评论