ITOP4412裸机编程-点亮LED灯

参考博文
ITOP4412裸机开发—LED
tiny4412裸机程序之点灯

前言:

       这是我的第一篇博客,不足之处还请批评指正,涉及侵权问题请与我联系,转载注明出处即可。
       本文介绍用SD卡启动的裸机编程,学会这个裸机编程,移植uboot之类的也不再话下了,由于Exynos4412这个芯片有两种封装方式pop和scp,这两个芯片对应着不同的BL1,盲目烧写错的BL1可能实现不了目标,详细实现功能请向下翻阅,博主的板子是迅为的精英板4412 pop1G封装。
博主的板子

启动原理:

overview
       图片是迅为提供的uboot文档中截的,从图中看开发板在上电时会经过以上三个步骤,就是图中的圆圈中的123了,第一步,开发板上电会去执行IROM,这个IROM会由OM的控制决定从哪个介质开始引导加载程序。
编码方式
       如图由五位二进制编码决定,详细不再讲,我们这里讲SD卡启动,就将开发板的拨码开关拨到SD卡启动。第二步,程序会从SD卡中加载第一段代码BL1到IRAM中;第三步,OS系统会被加载到DRAM中,至此引导结束。
       但是这个地方有个问题,第一步和第二步都对,但是第三步,BL1会从SD卡中的第18个扇区开始读取16K代码到internal SRAM中并跳转到这段代码的起始位置。如下图第一个:IRAM结构

       加载的这个BL2实际上是uboot的前16K,uboot后面的大部分代码会被BL2加载到DRAM中,然后跳转到DRAM中uboot开始的位置开始执行,我们这里讲裸机程序,实际上就是把BL2替换成裸机程序,但是这个裸机程序必须小于14K,为什么要小于14K呢?如下图BL2的结构:
BL2
       如图BL2的结构实际上是BL2的程序+4Byte的校验和+256Byte的签名+补全0=16K,因为BL1加载BL2到IRAM后要验证校验和是否正确,所以我们写好的裸机程序最终还要加上4字节的校验和后等于14K,官方提供的uboot中有制作校验和的源码,后面会介绍。

源码:

       新建文件夹及文件

mkdir leds
cd leds
touch start.S s3c4412_gpio.h myboot.lds Makefile mkbl2.c

       修改start.S

       这个汇编代码0x1002330c是PS_HOLD_CONTROL寄存器,保证电源管理芯片正常工作,0x11000c08是GPX0组控制上下拉的寄存器,有个ONO(GPX0_2)在控制电源管理。

#include "s3c4412_gpio.h"
.global _start

.word 0x2000
.word 0x0
.word 0x0
.word 0x0

_start:
   ldr	r10,=0x1002330c
   ldr	r11,[r10]
   orr	r11,r11,#0x300
   str	r11,[r10]

   ldr	r10,=0x11000c08
   ldr	r11,=0x0
   str	r11,[r10]

   ldr	r10,=GPL2CON
   mov	r11,#(0x01<<0)
   str	r11,[r10]

   ldr	r10,=GPK1CON
   mov	r11,#(0x01<<4)
   str	r11,[r10]

1:
   ldr	r10,=GPK1DAT
   mov	r11,#0x02
   str	r11,[r10]

   ldr	r10,=GPL2DAT
   mov	r11,#0x01
   str	r11,[r10]

   b	1b

       修改s3c4412_gpio.h

#ifndef S3C4412_GPIO_H
#define S3C4412_GPIO_H

#define GPX1CON (0x11000000+0x0c20)
#define GPX1DAT (0x11000000+0x0c24)
#define GPX1PUD (0x11000000+0x0c28)
#define GPX1DRV (0x11000000+0x0c2c)

#define GPK1CON (0x11000000+0x0060)
#define GPK1DAT (0x11000000+0x0064)
#
  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
itop4412上移植SSH,你可以按照以下步骤进行操作: 1. 首先,将SSH源代码拷贝到itop4412的开发环境中。你可以使用SCP命令将源代码从本地计算机复制到itop4412上的指定目录。例如,将源代码复制到itop4412的`/home/project/ssh-arm/openssh-4.6p1`目录下: ```shell scp /path/to/openssh-4.6p1.tar.gz root@itop4412:/home/project/ssh-arm/ ``` 2. 解压源代码文件。在itop4412上的开发环境中,使用以下命令解压源代码文件: ```shell tar -zxvf openssh-4.6p1.tar.gz ``` 3. 进入解压后的源代码目录: ```shell cd openssh-4.6p1 ``` 4. 配置编译选项。运行以下命令以配置SSH的编译选项: ```shell ./configure --host=arm-linux-gnueabihf --prefix=/usr/local/ssh ``` 这里的`--host`选项指定了目标平台为arm-linux-gnueabihf,`--prefix`选项指定了安装目录为`/usr/local/ssh`。 5. 编译源代码。运行以下命令以编译SSH源代码: ```shell make ``` 6. 安装SSH。运行以下命令以将编译后的SSH安装到指定目录: ```shell make install ``` 这将把SSH安装到`/usr/local/ssh`目录下。 7. 配置SSH服务器。在itop4412上的开发环境中,编辑SSH服务器的配置文件`/usr/local/ssh/etc/sshd_config`,根据你的需求进行配置。 8. 启动SSH服务器。运行以下命令以启动SSH服务器: ```shell /usr/local/ssh/sbin/sshd ``` 现在,你已经成功在itop4412上移植了SSH,并启动了SSH服务器。你可以使用SSH客户端连接到itop4412并进行远程操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值