运行UART的程序
1 捎程序的时候,注意,捎入的是norflash,此时的按钮应该在norFlash.
2 当捎入成功的时候,开始运行程序时,应该把按钮按回nandflash,因为程序的启动就是在nandflash,他把norflash 的内容放到了nandflash中运行,cpu的固化程序做的。
3 因为串口时用的速度是9600,所以你的vim .kermrc也应该改为9600.
4 lsusb探测U转串的设备 lsmod 探测驱动是否存在 ch341 (kermit 是应用程序在调用驱动) ls /dev/ttyU*(kermit 里边就是打开这个设备,这里边就是驱动程序的表象了,如果这个查的太快的话,就会ttyUSB1,这时你需要改vim .kermrc 中USB0给为1)
ls -l /lib/modules/2.6.2.z./kernel/drivers/usb/serial 这个命令执行下去就能考到.ko文件驱动的所在。
5 kermit 基于终端的命令行的串口驱动程序。
6 UART U通用,A是异步的意思、
7 串口一共3个,我们设置串口控制器的寄存器(8N1)。(N代表意思是
8 ULCON 1:0 11
9 UCON0 3:2 01 中断或者轮询
1:0 01
10 UART0.UBRDIVO=0X4d; 设置波特率
12000000/9600/16 -1=77化为16进制就是4d
11 波特率的始终有3种,但是我们只选了一种。PCLK
mini2440 主频400MHZ,最高533MHZ(530),现在不论ADC还是PCLK都是12M.
现在12M
改变频率可以通过时钟控制寄存器
晶振通电产生规律的正璇波。
自然产生不会通过100M,更高需要锁线环
倍频和分频。
12 UTXHO 串口最多发8位
在波特率调调节下,移位寄存器一位一位的移出去,
12 数据放入发送保持寄存器,然后在波特率协调下,发送移位器把保存寄存器中的数据一位一位的发送出去 UART0.UTXH0=C;
等待发送寄存器中的数据发送完毕
while(!(UART0.UTRSTAT0&(0X1<<)))
13 问题当移位的时候,旧的还没有移完,新的又来了,怎么办,需要一个while查看寄存器的状态。
14 UTRSTATN 2 0表不空,1,自动设置当无数据的时候。
1 我们选择中断和DMA模式,所以此处设为1.
0
15 gcc 手册中 中招built -fno-built 这样可以避免和库中的putc产生冲突。(CFLA后边添加)
16 0xa 和10 是一样的在移位运算中。
17 Vim 操作,o另起一行, 在输入状态中ctrl shift v
局部复制, ctrl v d 剪切。
18 两种取反方式
GPH.GPHCON = ((~(0xf<<4))&GPH.GPHCON) | 0xa<<4;
while(!(UART0.UTRSTAT0&0x1))
19 s3c2440.pdf 34页
20 配置UART0为,8位数据,无校验,1位停止位,正常模式,波特率9600,中断或者轮询。
21 kermit 会自动加\r\n;
22 回车回到当前行首,换行下一行当前位置,\\kermit 按下enter时,发送\r(linux才有\r,windos没有)
23 从CPU出来两个线连到3232上升高电平,这样子才能传出去。
24 对于捎程序的讲解:
利用norflash 中的程序,把你的4K程序捎到nandflash中,其实CPU启动的时候还是从nangflash 中拿起4k的程序到SRAM.
25 关于\r\n 在linux和windows中的不同,
kermit 类似于windows中(他把发来\n解析成\r)
26 ledon 24 这样子写的话,会选择2打开。
27 char s[] = "ledon 1 3";
char *p[4];
int i;
p[0] = strtok(s, " ");
for(i=1; p[i-1]!=NULL; i++)
{
p[i] = strtok(NULL, " ");
}
for(i=0; p[i]!=NULL; i++)
{
printf("%s\n", p[i]);
}
return 0;
strtok注意p的大小,会多一个NULL,但是这个只是用来判断,p[i]=NULL;并没有真正的赋值。
strtok 会自动给分割的字符串后边加\0
28 因为strtok的,<string.h>有全局变量,所以程序中必须能用全局变量才行,这里的LDFLAGS = -static -L /home/linux/toolchain/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/sys-root/usr/lib/ -lc
加static,最后的加-lc必须注意,这是libc.a的简称。
$(LD) $^ $(LDFLAGS) -T map.lds -o $(NAME).elf
# -static使用静态库
# -L 绝对路经,静态库所在目录
# -库名简称,静态库所在目录下具体使用哪个静态库
29 加个连接脚本在START.S里边,map.lbs
30 puts 没有加\r\n但是putc加了。
31 kermit crtl \ 然后c之后进去kermit命令界面,然后q是退出kermit ,而c是在此进入原先连接界面。
32 原理图上串口123,而我们用的是012,写错了。
33 puts putc,gets,getc这几个程序离开kermit毫无意义。
34
运行UART的程序的更多相关文章
- C与ARM汇编结合实现mini2440串口uart简单程序
最近学完了ARM的一些基础知识,开始在mini2440上开发一些简单的程序,串口发送程序是一开始涉及多个寄存器的例子,稍有繁多的步骤应该是开发过程中要慢慢适应的境况 下面的程序的目的是实现mini24 ...
- 玩儿转物联网IoT - 在Beagle Bone Black上运行node.js 程序
物联网(IoT)技术方兴未艾,智能手环,智能血压计,智能眼镜甚至智能鞋垫都开始进入我们的生活,各种智能设备层出不穷,世界已经到了一个"人有多大胆,地有多大产"的时代,不玩儿点物联网 ...
- 正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法 例如:一个android程序包含两个Activity,分别为MainActivity和Other ...
- 在Linux中运行Nancy应用程序
最近在研究如何将.NET应用程序移植到非Windows操作系统中运行,逐渐会写一些文章出来.目前还没有太深的研究,所以这些文章大多主要是记录我的一些实验. 这篇文章记录了我如何利用NancyFx编写一 ...
- 利用 PhpStorm、Idea 等 IDE 如何 运行/调试 Go 程序 ?
以自己常用的 PhpStorm 为例 第一步:下载安装 Go插件 File -> Settings -> Plugins -> 输入关键字:Go 第二步:新建 Go项目 File - ...
- 64位系统上运行32位程序能否申请到8G内存?
申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来讲,申请8G的存储空间没有任何意义,因为32位的程序最大寻址空间只有4G,32位程序在编译之后的机器代码也只有32位 ...
- robotium(及百度cafe)运行testcase之后程序挂起没有响应的原因调查及解决
一.问题背景 刚开始用的是百度cafe搭建的框架,已经用了一些版本,最后的test版本在7.4的apk上能跑,但是在最新发布的7.5的版本上跑不了,直接提示nullPointer错误,通过打日志的方式 ...
- Flash Builder 调试器无法连接到正在运行的应用程序(57%)
Flash Builder 调试器无法连接到正在运行的应用程序(57%),可能原因: 1,flashplayer不是debug版. 2,调试器(用debug版flashplayer随便 ...
- Apache运行python cgi程序
Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...
随机推荐
- php实现异步的程序调用
浏览器和服务器之间的通信是基于HTTP协议进行链接通讯的,它是一种请求和相应的协议.浏览器通过URL向服务器发送请求,服务器接收到请求并执行请求,然后服务器将执行完成的数据返回到客户端. 这就存在一个 ...
- PAT 1096 Consecutive Factors[难]
1096 Consecutive Factors (20 分) Among all the factors of a positive integer N, there may exist sever ...
- genymotion——VT-x is not available (VERR_VMX_NO_VMX) 的解决方案
进入虚拟机设置页面
- 聊一聊 Django 中间件
Django默认的Middleware有七个: MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.cont ...
- PKU 3041 Asteroids 最小点覆盖(最大匹配模板题)
题目大意:给你一个N*N的矩阵, 里面有K个星球, 我们可以让武器攻击矩阵的一行或者一列来使得这个星球被击碎, 现在问你最少需要几个这种武器才能把所有的星球击碎? 解题思路:关键是建模构图 把每一行当 ...
- openJudge C17K:Lying Island
地址:http://poj.openjudge.cn/practice/C17K/ 题目: C17K:Lying Island 查看 提交 统计 提问 总时间限制: 2000ms 内存限制: 26 ...
- OpenLDAP搭建全过程
目 的:搭建一套完整的OpenLDAP系统,实现账号的统一管理. 1:OpenLDAP服务端的搭建 2:P ...
- Http:设置 浏览器中MIME 类型
http://www.163ns.com/zixun/post/4602.html 自定义MIME类型支持FLV的相关设置 网络空间支持FLV的相关设置其实很简单,就是自定义一个MIME类型 一般虚拟 ...
- 获取 config文件的节点值
System.Configuration.ConfigurationManager.AppSettings["followTemplate"];
- hive + hadoop 环境搭建
机器规划: 主机 ip 进程 hadoop1 10.183.225.158 hive server hadoop2 10.183.225.166 hive client 前置条建: kerberos部 ...