天嵌 ARM开发社区

 找回密码
 注册
查看: 4479|回复: 21

在做一个LCD实验时出现了一个奇怪的现象,调用printf函数总出现死机,求助!!

[复制链接]
Hongs 发表于 2010-6-15 23:34:08 | 显示全部楼层 |阅读模式
程序一路跑,跑过了LCD的初始化,LCD显示单色,然后就串口初始化,输出一个字符到电脑,
电脑正确收到第一个字符,但第二个字符收不到了,也没有进入到下面点灯程序里面....
我判断它是在printf 函数中跑飞了,如果把printf 函数去掉,程序一切正常。
本人的整个程序是从nand flash 中复制到SDRAM中运行。 NAND Flash 用的是K9F2G08U0A
SDRAM 用的是48LC16M16 ,是TQ的板子, 下面是部分程序。附件是整个程序。
搞不懂它为什么会这样。printf 函数我看过了,它也是使用putc 这个函数从串口输出字符的。这个函数没问题。我试过在printf 里面 一开始处加了个 return 语句,让它一进入就返回,可是程序也不能往下执行。(printf (".........") {retur ;} )
求助中.....
        Lcd_Port_Init();
        Tft_Lcd_Init(MODE_TFT_8BIT_240320);
        Lcd_PowerEnable(0,1);
        Lcd_EnvidOnOff(1);               
        ClearScr(0x00EA0000);
        uart0_init();
        putc(0x48);
        wait(300000);
        printf("Measuring the voltage of AIN0 and AIN1, press any key to exit\n\r");
        putc('o');
                while(1){
        wait(300000);
        GPBDAT = (~(i<<5));                 // 根据i的值,点亮LED1-4
        if(++i == 16)
        i = 0;
                 }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2010-6-18 20:52:42 | 显示全部楼层
运行到哪里死机的?你没有说明啊。
 楼主| Hongs 发表于 2010-6-19 16:36:03 | 显示全部楼层
是运行到printf 那里就死了,谢谢帮忙,,,
亚瑟王 发表于 2010-6-19 18:54:07 | 显示全部楼层
想问你一下,你的程序里面有没有定义printf这个函数?
 楼主| Hongs 发表于 2010-6-20 08:45:10 | 显示全部楼层
有,绝对有,
亚瑟王 发表于 2010-6-24 10:47:06 | 显示全部楼层
把你的程序发上来吧。
 楼主| Hongs 发表于 2010-6-24 19:36:21 | 显示全部楼层
我发了,在第一篇帖子那里的附件,,
亚瑟王 发表于 2010-6-26 19:24:23 | 显示全部楼层
你在哪个函数中初始化printf的呢?
你从哪里提取的这些代码?
 楼主| Hongs 发表于 2010-6-27 17:37:16 | 显示全部楼层
不太明白你的意思,,
初始化printf 函数 ? 这个函数要初始化么,应该直接可以用的吧...
你是不是指要先声明,然后定义这个函数 ? 这个有的,在 printf.h 这个头文件里
#ifndef _PRINTF_H
#define _PRINTF_H

int printf(const char *fmt, ...);
int scanf(const char * fmt, ...);

#endif /* _PRINTF_H */

至于定义这个函数,也有的,在 printf.c 文件,
int printf(const char *fmt, ...)
{
        int i;
        int len;
        va_list args;
      ..................

在那里提取代码 ?
我不明白这个问题, 
亚瑟王 发表于 2010-6-28 21:33:56 | 显示全部楼层
你这个源码从uboot还是从vivi中提取出来的?
 楼主| Hongs 发表于 2010-6-29 22:17:09 | 显示全部楼层
这个就不清楚了,我也是从某书本上面的光盘里复制过来的,
其实,应该不是这个函数的问题。
只要我改一下链接文件中,各个 “.o” 文件的排列顺序,
其他函数也会出现这种跑飞的情况的,
 楼主| Hongs 发表于 2010-6-29 23:03:00 | 显示全部楼层
顺便问一个TQ2440 开发板的 DM9000 网卡芯片的连接问题:
我在底板原理图中看到,DM9000 是用 nGCS2 引脚作片选的,
但在 u-boot-1.1.6 中的 EmbedSky.h 文件中有如下几行
#define CONFIG_DRIVER_DM9000                       
#define CONFIG_DM9000_BASE                        0x20000300
#define DM9000_IO                                CONFIG_DM9000_BASE

上面几行好像把 DM9000 的基址定义在 0x20000300 中了,
而0x20000300 它是在 bank4 的地址范围,也就是用 nGCS4 引脚作片选,

为什么可以这样的呢 ?  
亚瑟王 发表于 2010-6-30 21:44:15 | 显示全部楼层
TQ2440开发板的DM9000用的是nGCS4。
你的代码其它程序跑飞了,是什么函数跑飞的呢?
 楼主| Hongs 发表于 2010-6-30 23:22:20 | 显示全部楼层
具体也很难说是那个函数跑飞的,,
反正,我在连接文件中,把那些 .o 文件顺序重新排放一下,就有可能在调用当中的某个 .o 文件中的函数时就跑飞了,
你可以帮我看看我的lcd.lds ,makefile 和 nand.c 文件么, nand.c 中有一个复制 nand flash 中的内容到 sdram 的函数,看看是不是有问题,,

既然原理图改了是nGCS4,就及时更新光盘中的原理图吧, 
 楼主| Hongs 发表于 2010-7-1 20:14:22 | 显示全部楼层
我编译uboot 出错了,如图,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 08:35 , Processed in 1.036172 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表