查看: 2037|回复: 0

[教程] MX6U 点灯实验(汇编驱动版)

[复制链接]
  • TA的每日心情
    慵懒
    2020-1-19 10:06
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-1-28 17:29:06 | 显示全部楼层 |阅读模式
    分享到:
    哈喽大家好,我是鸿野。这个春节一直在家无事,还不如腾出时间来学习一下开发板。俗话说得好:“万事开头难”,所以呢在第一次的学习中,我们就先学习一个最简单的实验——点灯。
    首先呢,我们先要认识一下这个开发板不同接口的功能,我们可以看到这个板子的不同功能也是十分丰富的。下面是我在视频学习中的一个截图,里面是原子哥的对接口的的简单介绍(可能字迹有些潦草,大家如果有些看不清的可以私戳我)
    图片1.png

    由于这次实验是属于汇编驱动,估计好多朋友都忘记汇编语言了,在原子哥的视频教学中,他也是对汇编语言进行了一下:

    汇编由一条一条指令构成,指令就涉及到汇编指令。
    Int a,b;
    a=b;
    假设a地址为0X20,b地址为0x30
    LDR R0, =0X30
    LDR R1, [R0]
    LDR R0, =0X20
    STR R1, [R0]
           我们在使用汇编编写驱动的时候最常用的就是LDR和STR这两个指令。
    在回复汇编基础后,我们便开始对LED灯的控制实验。
    图片2.png


      首先,我们开始对板子进行初始化。初始化流程如下:
           STM32IO初始化流程:
           ①、使能GPIO时钟。
           ②、设置IO复用,将其复用为GPIO
           ③、配置GPIO的电气属性。
           ④、使用GPIO,输出高/低电平。

           I.MX6ULLIO初始化:
           ①、使能时钟,CCGR0~CCGR6这7个寄存器控制着6ULL所有外设时钟的使能。为了简单,设置CCGR0~CCGR6这7个寄存器全部为0XFFFFFFFF,相当于使能所有外设时钟。
           ②、IO复用,将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3~0设置为0101=5,这样GPIO1_IO03就复用为GPIO。
           ③、寄存器IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03是设置GPIO1_IO03的电气属性。包括压摆率、速度、驱动能力、开漏、上下拉等。
           ④、配置GPIO功能,设置输入输出。设置GPIO1_DR寄存器bit3为1,也就是设置为输出模式。设置GPIO1_DR寄存器的bit3,为1表示输出高电平,为0表示输出低电平。

    接下来是驱动的编写与编译过程。在这个过程中,原子哥有提及一个链接的过程。我在这里与大家分享一下:
    链接就是将所有.o文件链接在一起,并且链接到指定的地方。本实验链接的时候要指定链接起始地址。链接起始地址就是代码运行的起始地址。
    对于6ULL来说,链接起始地址应该指向RAM地址。RAM分为内部RAM和外部RAM,也就是 DDR。6ULL内部RAM地址范围0X900000~0X91FFFF。也可以放到外部DDR中,对于I.MX6U-ALPHA开发板,512MB字节DDR版本的核心板,DDR范围就是0X80000000~0X9FFFFFFF。对于256MBDDR来说,那就是0X80000000~0X8FFFFFFF
           本系列视频,裸机代码的链接起始地址为0X87800000。要使用DDR,那么必须要初始化DDR,对于I.MX来说bin文件不能直接运行,需要添加一个头部,这个头部信息包含了DDR的初始化参数,I.MX系列SOC内部boot rom会从SD卡,EMMC等外置存储中读取头部信息,然后初始化DDR,并且将bin文件拷贝到指定的地方。
           Bin的运行地址一定要和链接起始地址一致。位置无关代码除外。

    最后一步是烧写bin文件的过程
    在教学视频中,原子哥采用的是烧写到SD卡的方式,为了完成这项工作,需要使用正点原子提供的imxdownload软件。
           Imxdownload使用方法:
    确定要烧写的SD卡文件。
               给予imxdownload可执行权限:(Chmod 777 imxdownload)
               烧写:(/imxdownloadled.bin /dev/sdf)
                          Imxdownlaod会向led.bin添加一个头部,生成新的load.imx文件,         这个load.imx文件就是最终烧写到SD卡里面去的。)
       
      完成这些操作,我们就可以查看我们的实验现象了!大家可以按照我的这个方法去实验一下(还是推荐直接去观看原子哥的教学视频,哈哈哈)大家学习后也可以一起互相交流啊,哈哈哈。

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 01:00 , Processed in 0.105911 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.