运行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

时间: 2024-10-12 10:39:33

运行UART的程序的相关文章

Win7下Eclipse中运行远程MapReduce程序

1.hadoop插件的参数配置 2.运行时的参数 3.运行结果 Win7下Eclipse中运行远程MapReduce程序,布布扣,bubuko.com

使用 Bluemix? Live Sync 快速更新 Bluemix 上运行的应用程序实例

如果您要构建 Node.js 应用程序,那么可以使用 IBM® Bluemix® Live Sync 快速更新 Bluemix 上的应用程序实例,并像在桌面上进行操作一样进行开发,而无需重新部署.执行更改后,您可以立即在运行中的 Bluemix 应用程序中看到该更改.Bluemix Live Sync 可从命令行以及在 Web IDE 中运行.您可以使用 Bluemix Live Sync 来调试以 Node.js 编写的应用程序. Bluemix Live Sync 由三个功能部件组成 桌面同

64位系统上运行32位程序能否申请到8G内存?

申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来讲,申请8G的存储空间没有任何意义,因为32位的程序最大寻址空间只有4G,32位程序在编译之后的机器代码也只有32位的寻址数(指针占4个字节),因此申请8G的空间是没啥意义的,而且一般系统都会为每个进程设置一些资源限制,对于32位程序其能申请的内存量也远远小于4G可以看一下下面这个表操作系统内部数据结构限制对比 IT168评测中心 分组 限制 64位Windows限制 类别 单个进程虚拟空间 4GB 16TB 用

运行全屏程序自动切回桌面的问题

最近遇到的问题,运行全屏程序,比如游戏·视频等,每隔一段时间自动切回到桌面,运行其他非全屏程序会失去当前焦点,比如窗口变灰.百度了很多,查看任务计划,兼容性,注册表等等,都没解决.最后利用排除法,一个个kill进程,最后测试出一个进程QQprotect.exe,有它在,就出这问题,kill掉它,完美解决.这是个腾讯qq的安全保护进程,运行qq必备,联系了客服,客服说给反馈,等吧.目前qq7.2版本,7.3版本都有这个问题,不知道是我的个案还是通病,win7  32位系统.排除病毒,其他插件问题.

linux下,一个运行中的程序,究竟占用了多少内存

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存. 虚拟内存可以不用考虑,它并不占用实际物理内存. (2). top 命令也可以 其中  VIRT(或VSS)列  表示,程序占用了多少虚拟内存. 同 ps aux 中的 VSZ列 RES列 表示, 程序占用了多少物理内存.同 ps aux 中的RSS列 2.在linux下, 查看当前系统占用

避免在同一机器上同时运行同一应用程序的多个实例

通常,使用有名互斥体(named mutex).但是该方案有以下的缺陷 互斥体的名称有被其他应用程序使用的较小,潜在风险.此时,该方案不再有效,并且很难检测到bug. 该方案无法实现允许一个应用程序产生N个实例这样的一般问题. 使用Process类. 1 /// <summary> 2 /// check whether other instance of the application is running. 3 /// </summary> 4 /// <returns&

创建和运行shell脚本程序

转载请标明http://www.cnblogs.com/winifred-tang94/ 要创建一个shell脚本程序,首先新建一个文本文件,然后在这个文本文件中按照shell编程规则输入shell命令即可. 要运行一个shell程序有两种方式: A. 赋予shell程序的执行权限(通过chmod命令) B. 通过另外的shell加载脚本(通过sh ./脚本文件名称的方式运行) Eg. 注意:上面的代码是错误的,最后echo后跟着的不是单引号’而是反引号`(esc下面的那个键) 也可以用sh .

gdb调试运行时的程序小技巧

使用gdb调试运行时的程序小技巧 标签: 未分类 gdb pstack | 发表时间:2012-10-15 04:32 | 作者:士豪 分享到: 出处:http://rdc.taobao.com/blog/cs 原创文章,欢迎转载.转载请注明:转载自淘宝核心系统团队博客,谢谢! 原文链接地址: 使用gdb调试运行时的程序小技巧 下面介绍我调试时经常遇到的三种问题,如果大家也有类似的问题交流一下解决方法: 情景1:在不中止程序服务的情况下,怎么调试正在运行时的程序 情景2:需要同时看几个变量的值或

调试-----调试正在运行的多线程程序

4 using namespace std; 5 static int a = 1; 6 7 void *thread0(void*) 8 { 9 while (1) 10 { 11 a++; 12 } 13 return (void*)0; 14 } 15 16 void *thread1(void*) 17 { 18 while (1) 19 { 20 a++; 21 } 22 return (void*)0; 23 } 24 25 int main() 26 { 27 pthread_t