• 最近在玩AM437X,记录下一些学习过程。分为裸机和驱动。
    转载:http://www.hceng.cn

0.准备文件

  • AM437x EVM Schematic(后称原理图YP)
  • am4378(后称芯片手册SP)
  • spruhl7g(后称参考手册CP)

1.分析原理图

四个LED灯,单片机通过控制三极管的通断,从而控制灯的亮灭。
单片机高电平,三极管打通,灯亮,反之低电平,LED灭。

D7_Blue 对应uart3_txd(GPIO5_3);
D8_Blue 对应uart3_rxd(GPIO5_2);
D9_Green 对应uart3_rtsn(GPIO5_1);
D10_Red 对应uart3_ctsn(GPIO5_0);


2.编写程序

1.使能GPIO外设时钟;

PRCM_CM_PER_GPIO5_CLKCTRL = (0x01<<1);

2.设置GPIO模式(默认使能了上拉,且为GPIO模式);

CTRL_CONF_UART3_RXD  &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);//使能上/下拉、关闭输入
CTRL_CONF_UART3_RXD  |=  (0x7<<0 | 0x01<<17);//IO模式,设置上拉
CTRL_CONF_UART3_TXD  &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);//使能上/下拉、关闭输入
CTRL_CONF_UART3_TXD  |=  (0x7<<0 | 0x01<<17);//IO模式,设置上拉
CTRL_CONF_UART3_RTSN &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);//使能上/下拉、关闭输入
CTRL_CONF_UART3_RTSN |=  (0x7<<0 | 0x01<<17);//IO模式,设置上拉
CTRL_CONF_UART3_CTSN &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);//使能上/下拉、关闭输入
CTRL_CONF_UART3_CTSN |=  (0x7<<0 | 0x01<<17);//IO模式,设置上拉

3.设置为输出;

GPIO5->OE &= ~(0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);

4.设置允许输出位;

GPIO5->SETDATAOUT |= (0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);

5.设置输出值;

GPIO5->DATAOUT |=  (0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);//高
GPIO5->DATAOUT &= ~(0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);//低

6.封装成函数;
将前面的1-4步,封装为void led_init(void);

void led_init(void)
{PRCM_CM_PER_GPIO5_CLKCTRL  = (0x01<<1);CTRL_CONF_UART3_RXD  &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);CTRL_CONF_UART3_RXD  |=  (0x7<<0 | 0x01<<17);CTRL_CONF_UART3_TXD  &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);CTRL_CONF_UART3_TXD  |=  (0x7<<0 | 0x01<<17);CTRL_CONF_UART3_RTSN &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);CTRL_CONF_UART3_RTSN |=  (0x7<<0 | 0x01<<17);CTRL_CONF_UART3_CTSN &= ~(0x7<<0 | 0x01<<16 | 0x01<<17 | 0x01<<18);CTRL_CONF_UART3_CTSN |=  (0x7<<0 | 0x01<<17);GPIO5->OE &= ~(0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);GPIO5->SETDATAOUT |= (0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);
}

将前面的第5步根据需求,封装成分别操作每个灯;
总开关(1开0关):

void led_switch(unsigned char on_off)
{if(on_off)GPIO5->DATAOUT |= (0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);else GPIO5->DATAOUT &= ~(0x01<<0 | 0x01<<1 | 0x01<<2 | 0x01<<3);
}
  • 每个灯的独立开关(1开0关):
void led0_switch(unsigned char on_off)
{if(on_off)GPIO5->DATAOUT |= (0x01<<0);elseGPIO5->DATAOUT &= ~(0x01<<0);
}void led1_switch(unsigned char on_off)
{if(on_off)GPIO5->DATAOUT |= (0x01<<1);elseGPIO5->DATAOUT &= ~(0x01<<1);
}void led2_switch(unsigned char on_off)
{if(on_off)GPIO5->DATAOUT |= (0x01<<2);elseGPIO5->DATAOUT &= ~(0x01<<2);
}void led3_switch(unsigned char on_off)
{if(on_off)GPIO5->DATAOUT |= (0x01<<3);elseGPIO5->DATAOUT &= ~(0x01<<3);
}

3.下载设置

  • AM437X支持多种方式启动,比如:flash memory, memory cards and UART, USB, or Ethernet.以后估计使用U盘和SD卡的情况居多。
    U盘和SD卡启动对image有一定的格式要求,需要加个头信息。该部分在参考手册5.2.9 Image Format有介绍,后面有时间再分析。

这里直接用现成的tiimage.c进行加头操作。tiimage.c和程序的交叉编译,都是在Linux进行的,需要做如下步骤:
1.清理,交叉编译;
2.编译,加头;
3.重命名;
4.复制到SD卡(U盘);

  • 为了方便,写了脚本完成以上操作,只需要插上U盘(Windows下),然后ssh登陆执行脚本即可。关于工作流的想法,后面找个时间写写。

{ [hceng_am437x_create_MLO.sh] https://github.com/hceng/learn/blob/master/shell/hceng_am437x_create_MLO.sh}

#!/bin/bash

myPath="/mnt/hgfs/windows/"  #利用虚拟机"文件共享"WindowsU盘的路径
RED_COLOR='\E[1;31m'         #红
GREEN_COLOR='\E[1;32m'       #绿
YELOW_COLOR='\E[1;33m'       #黄
BLUE_COLOR='\E[1;34m'        #蓝
PINK='\E[1;35m'              #粉红
RES='\E[0m'                  #END#生成MLO
function creat_MLO()
{rm -f /mnt/hgfs/windows/MLOmake clean makegcc  ./image_tool/tiimage.c  -o  tiimage.out./tiimage.out   0x40300000    MMCSD    am437x_hardware.bin   /mnt/hgfs/windows/MLO  rm   -f *.dis  *.bin  *.o  *_elf tiimage.outls /mnt/hgfs/windows/MLO -l && echo -e  "${GREEN_COLOR}======MLO OK!======${RES}"\|| echo -e  "${RED_COLOR}======MLO ERROR!======${RES}"sync
}#判断U盘路径是否存在;
#存在则生成MLO、拷贝,不存在则提示报错
if [ ! -d "$myPath" ];then  echo -e  "${RED_COLOR}======Check USB Disk!======${RES}"
elsecreat_MLO
fi
sync
exit

Ti437x LED裸机程序全解相关推荐

  1. iar 连接linux开发板,LED裸机程序(IAR)

    LED裸机程序(IAR) 一.实验环境 开发环境:IAR5.30 开发板:UT-S3C6410 开发工具:JLINK V8 二.实验目的 在无操作系统的开发板上,运行程序,掌握裸机程序的开发过程,熟悉 ...

  2. 一灯大师之点亮OK6410开发板上4个LED裸机程序---嵌入式回归第十篇

    接着上一篇关闭mmu和cache后,这一篇来点亮开发板上的一盏LED小灯,前面所作的初始化工作基本看不到效果,其实这一段也是最麻烦的!如果有问题调试很麻烦!点亮了LED之后就可以用LED来看程序是否如 ...

  3. u-boot-2014.10移植第3天----LED裸机程序

    硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 在移植u-boot之前我 ...

  4. ARM嵌入式裸机程序学习(一)

    这里不用ADS集成开发环境,因为ads兼容性存在问题,而且通过自己手动编译\链接对学习有好处,所以我们下面都在linux环境下进行ARM开发. 开发环境:Linux操作系统(Ubuntu) 开发工具: ...

  5. 4412裸机程序之点亮LED

    4412裸机程序之点亮LED 看一下Tiny4412原理图: 在Tiny4412核心板上有4个可编程控制LED,我们来点亮led1, led1右边接3.3V电源,左边接GPM4_0接口,把GPM4_0 ...

  6. 啦啦外卖45.9全解+三端小程序,修复坑位正常使用截图预览

    啦啦外卖45.9全解+三端小程序,修复坑位正常使用截图预览,全部已知或隐藏问题已解决

  7. mini2440开发板学习裸机开发——day1 裸机运行LED灯程序

    开发背景:系统:ubuntu18.04系统 开发板:mini2440 串口连接工具 J-link连接工具 工具:secureCRT J-link 本次学习基于韦东山老师的嵌入式linux应用开发手册书 ...

  8. 【JavaEE】 IntelliJ IDEA 2022.2最新版Tomcat导入依赖详细教程全解及创建第一个Servlet程序

    目录 一.软件资源 二.放置settings.xml文件 三.创建项目 四.引入依赖 ​五.创建目录 六.编写代码 写在前面:☞What is Servlet? Servlet其实是一种实现动态页面的 ...

  9. Tiny4412裸机程序之代码在DDR SDRAM中运行

    转载:http://www.techbulo.com/1509.html Tiny4412裸机程序之代码在DDR SDRAM中运行 2014年11月13日 ⁄ 裸机程序 ⁄ 共 8647字 ⁄ 字号  ...

最新文章

  1. c#与halcon模板匹配控制EPSON四轴机器人输出旋转角度
  2. 2018最新版 手机号、验证码正则表达式 jq + 小程序
  3. 《你必须知道的.NET》,前言
  4. LVS之VS/NAT搭建web集群实战!!!
  5. 系统相机裁剪比例_从单反到手机,三种黄金比例构图方法,让你的照片与众不同...
  6. 【第2波】有些话,适合在朋友圈说
  7. 2017.4.23 税收与补贴问题 思考记录
  8. 算法测试例子特殊输入形式
  9. thinkpad s5黑将摄像头最新驱动_第一款以iOS方式运行的安卓手机:联想新机S5黑科技震撼来袭!...
  10. 豆瓣电影(二):数据分析
  11. 量子前沿英雄谱|激光界泰斗Robert Byer(罗伯特·拜尔)
  12. 迷之Konigsberg七桥问题
  13. python中abs和fabs的区别_abs()与fabs()的速度差异和fabs()的优势
  14. 30000字Linux期末考试复习总结
  15. 什么是云服务器,云服务器有哪些优势和特点?
  16. html右侧有白边,html5有白边解决办法
  17. 2742: [HEOI2012]Akai的数学作业
  18. 查询电话号码归属地的PHP接口(处理过可供前端使用的)
  19. <br>和<hr>标签
  20. INC公司和LLC公司的区别

热门文章

  1. 使用vue写一个计时器
  2. IOS FaceID TouchID识别
  3. Python练习——基础练习题1
  4. SpringSocial 开发 QQ 登录
  5. 【正点原子FPGA连载】 第三章 硬件资源详解 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
  6. SRE从踩坑到牛逼(二)利用Python进行Arcgis站点分析+Nginx日志分析
  7. C语言单元测试之安装gtest教程及一个简单样例
  8. 什么是combo复用口,光电类型如何转换?
  9. bt4 linux 镜像,让你的启动U盘集合7个系统包括pe bt4 beibi q3 linux dos等
  10. 用大数据和机器学习揭示十二星座的真实面目(下) ‖ 处女座Get√