在nand boot中自己实现printf
来源:互联网 发布:mysql 长整型 编辑:程序博客网 时间:2024/05/02 16:10
在tgt_putchar('a');能够输出a的基础上:
#define NULL 0int strlen(char *str)//leon{int i;if(str==NULL)return -1;for(i = 0;str[i]!='\0';i++);return i;}void str_printf(char *msg){int x = strlen(msg);int i = 0;for(;i<x;i++)tgt_putchar(msg[i]);if(msg[x-1]=='\n')tgt_putchar('\r');//回车后,回到行首.}
char *itoa(int value, char *string, int radix){char tmp[33];char *tp = tmp;int i;unsigned v;int sign;char *sp;if (radix > 36 || radix <= 1){return 0;}sign = (radix == 10 && value < 0);if (sign)v = -value;elsev = (unsigned)value;while (v || tp == tmp){i = v % radix;v = v / radix;if (i < 10)*tp++ = i+'0';else*tp++ = i + 'a' - 10;}if (string == 0)string = (char *)boot_malloc((tp-tmp)+sign+1);sp = string;if (sign)*sp++ = '-';while (tp > tmp)*sp++ = *--tp;*sp = 0;return string;}#define HAVE_PRINTF 1#ifdef HAVE_PRINTFint printf(const char *fmt,...)//leon{char *str = fmt; int x = strlen(str);char* pArg = NULL;char c;pArg = (char*) &fmt;pArg += sizeof(fmt);char tmp[100];for(;*fmt!='\0';fmt++){c =*fmt;if (c != '%'){tgt_putchar(*fmt);if(*fmt=='\n')tgt_putchar('\r');}else{fmt++;switch(*fmt){case 'd':itoa(*((int*)pArg),tmp,10);str_printf(tmp);break;case 'i':itoa(*((int*)pArg),tmp,10);str_printf(tmp);break;case 'u':if(*((int*)pArg)<0){printf("printf format \%u use err\n");return 0;}itoa(*((int*)pArg),tmp,10);str_printf(tmp);break;case 'x':itoa(*((int*)pArg),tmp,16);str_printf(tmp);break;case 's':str_printf(*((int*)pArg));break;case '0':if((*(fmt+1)=='8')&&(*(fmt+2)=='x')){itoa(*((int*)pArg),tmp,16);if((strlen(tmp)<8)&&(strlen(tmp)>0)){int j = 8-strlen(tmp);int i = 0; for(;i<j;i++)tgt_putchar('0');str_printf(tmp);}elsestr_printf(tmp);fmt=fmt+2;break;}else if((*(fmt+1)=='2')&&(*(fmt+2)=='x')){itoa(*((int*)pArg),tmp,16);if((strlen(tmp)<2)&&(strlen(tmp)>0))//fixme{int j = 2-strlen(tmp);int i = 0; for(;i<j;i++)tgt_putchar('0');str_printf(tmp);}elsestr_printf(tmp);fmt=fmt+2;break;}else{str_printf("this \"printf\" only support %d%i%u%x%s%08x%02x\n");break;}default:str_printf("this \"printf\" only support %d%i%u%x%s%08x%02x\n");break;}pArg += sizeof(int);//point to next arg}}}
- 在nand boot中自己实现printf
- 成功在skyeye 上实现U-Boot 的Nand命令并从Nand中启动Linux
- 在lua中实现printf
- 在u-boot for bf561中使用nand flash
- 详解U-Boot中printf函数的实现
- 详解U-Boot中printf函数的实现
- 自己实现printf函数
- 自己实现printf
- 自己实现printf函数
- u-boot-2011.03在TQ2440上的移植(5)—实现Nand/Nor 双启动
- U-boot实现Nand/Nor 双启动
- 实现自己的printf函数
- 怎样实现自己的printf
- 实现自己的printf函数
- 实现自己的printf函数
- 自己实现printf函数,用...
- 自己实现一个printf函数
- 实现自己的printf函数
- ffplay开发随笔
- sqlserver/oracle update set from 写法 .
- Flex树的实例
- Android应用开发揭秘的第26个程序12_2_openglcolor修改版和高仿版的源码注释
- 【web】赵雅智_Filter常见应用
- 在nand boot中自己实现printf
- POJ 3006解题报告
- UBUNTU安装PHP apache mysql phpmyadmin
- fopen C++
- xml中标签、标记与元素的比较
- 操作系统真实的虚拟内存是什么样的(一)
- PHP 调用shell 脚本 报错 /sbin/nologin
- Guice学习(一)
- 4歌星大奖赛