嵌入式 linux 下 通用 console(控制台) 的实现
前言:
当我们使用嵌入式linux 进行开发时,kernel 跑起来之后,我们希望能通过串口(标准输入、输出),在应用程序正在运行的过程中,进行一些调试工作,例如,对CPU一些寄存进行调整,以观测调整以后的结果,并且,当我们无法把我们的应用程序放在后台运行,那么我们就需要实现一个基础的控制台。
下文中的控制台,虽然简单,但完备的支持 上 下 左 右 backspace del 常用控制台操作,使用 上 下 键可以浏览已经输入过的命令(类似 doskey 这样的功能),支持 光标 左右移动 修改命令
一般我们在 main 函数最后 都会做 while(TRUE) sleep(1000) 这样 阻塞住主线程,用这个控制台的实现,替换这个过程,则应用程序可增加控制台应用功能,各部分的具体实现如下:
调用代码(main.c):
#include <stdio.h>
#include "app_console.h"
int main(int argc, char *argv[])
{
// 之前的应用代码
....
....
....
App_Console_Start();
return 0;
}
控制台头文件(app_console.h)
#ifndef __APP_CONSOLE_H__
#define __APP_CONSOLE_H__
#ifdef __cplusplus
extern "C"
{
#endif
#include "type_def.h"
void App_Console_Start();
#ifdef __cplusplus
}
#endif
#endif
控制台C文件(app_console.c)
#include "app_console.h"
#include "ctype.h"
#include "unistd.h"
#include "app_test.h"
// 说明
// read write 使用的是 POSIX 的标准文件读写函数
// unistd.h 包含了 STDIN_FILENO 等文件描述符的定义
// ctype.h 包含了 isprint 函数的声明
// 经过仔细考虑,决定不支持 ESC 键,因为ESC 键的键值为 0x1b 与 上下左右的键值重复
// 但可以考虑按2下ESC清除本行输入
// 对不可打印字符的处理仅限于以下已经列出的宏定义
// change:
// 放弃对 double ESC 的支持,因为可能出现按了 ESC 又按了 方向键 的情况
// 则用户输入编码为 '\x1b' '\x1b' '[' 'A' (按了ESC 又按了上键)
// change:
// 为了将应用与控制台应用剥离,则将 #define MAX_CMD_LEN 512 房到 app_test.h 中定义
// 二维数组作为参数进行传递时,需要明确第二个维度的大小,否则编译器无法正确定位地址
#define KEY_BACKSPACE '\x08' // back space
#define KEY_DEL
相关文档:
用‘grep’搜索文本文件
如果您要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。
假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:
$ grep magic /usr/src/linux/Documentation/ ......
将php服务器架到linux下时没有注意该问题,
前几天倒是碰到了在linux下验证码的图片无法显示的情况,发现linux下也要有gd库的支持,于是安装了php5-gd(本人使用的是php5)
,这个问题解决了
今天突然发现img图片无法显示,上网搜了一把,又经过测试得出如下结论
<img src="pc.jpg"......>
他会以当前路径 ......
在Linux中用ttySx的形式来表示串口设备名,如 COM1被表示为ttyS0,COM2被表示为ttyS1,以此类推。下面这个命令显示系统中被检测到的串口:
# dmesg | grep ttyS
[ 25.942157] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 25.942840] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) ......
Linux下网卡命名规律:eth0,eth1。第一块以太网卡,第二块。lo为环回接口,它的IP地址固定为127.0.0.1,掩码8位。它代表你的机器本身。
1、ifconfig是查看网卡的信息。
ifconfig [Interface]
Interface是可选项,如果不加此项,则显示系统中所有网卡的信息。如果添加此选项则显示所指定的网卡信息
&nbs ......