现在自己的基础: 项目经验:做过四轴飞行器项目,简单2D画图机
平台经验:会用
STM32 MSP430 51
单片机 和CPLD
编程语言:C/C++,JAVA
硬件驱动 : 写过液晶屏,摄像头驱动程序,无线蓝牙。(流水灯什么的就不算了)
目标很简单:读懂linux内核,因为之前用
单片机做底层开发,感觉自己可以弄懂其中硬件的原理。只要完全读懂了linux的内核,那就可以修剪linux,创造自己的操作系统。准备用
ARM11来作为移植linux的平台
现在在做什么:
linux的内核太复杂,牵扯到很多数据结构,我还是刚上大三的本科生,很多数据结构得自己补习。
给自己的短期目标就是:读懂一个轻量级的操作系统内核 -------FreeRTOS
为什么要读linux内核:
linux 的网络特性是其他操作系统难以企及的,现在是物联网的时代,很多
嵌入式产品需要有强大网络功能作为后台,毫无疑问的是,linux已经霸占了服务器了。所以想读懂他。但就我现在这个水平还差很远。
不知道有没有相同指向的同僚,可以一起讨论。我会在这帖子里发布一些自己的学习历程,也算是我努力奋斗的见证!
struct Node//定义节点的数据结构
{
int Data;//数据
Node * Next;//递归调用自身,指向下一个节点指针地址,指向下一个结构体的地址
};
class List{
Node *head; //创建一个指针类似数组的第一个元素,这一步基本上代表了已创建链表
public:
Node* CreateList(int n); //工作要求,创建深度为n的链表 ,成功
void OutputList(Node * L); //工作要求,输出链表,成功
int LenthList(Node * L); //工作要求,输出链表长度 ,成功
void ClearList(Node * L); //工作要求,清空当前链表,成功
Node* DeleteList(Node * L,int nData); //删除当前链表的第几个节点
void insertList(int aDate,int bDate); //链表结点的插入
}
定义了一些方法,都是自己独立编程,掌握一个重要的数据结构。
linux的队列方面好像用的就是这个数据结构
自己写了个shell程序 linux的shell功能实现应该和我的方法差不多
unsigned char doString(char *str)
{
if(strcmp(str,"HELP")==0)
return 0;
if(strcmp(str,"CreateList")==0)
{
return 1;
}
if(strcmp(str,"LenthList")==0)
{
return 2;
}
if(strcmp(str,"OutputList")==0)
{
return 3;
}
if(strcmp(str,"ClearList")==0)
{
return 4;
}
if(strcmp(str,"DeleteList")==0)
{
return 5;
}
return 99;
}
void ListShell(void)
{
char str[50];
Node * TEMPN; //节点存放位置,现在最多支持查询一个链表,声明为全局变量
List TEMP; //方便使用函数
int n=0;//存放深度
cout<<"单项链表Shell程序,更新时间9月8日"<<endl;
cout<<"开发者:陈景研"<<endl;
while(1)
{
cout<<"intput command@Jingyan: ";
cin>>str; //输入指令
switch( doString(str))
{
case 0: cout<<"当前可用指令
CreateList(int n)//创建深度为n的链表
OutputList//输出当前链表的内容
LenthList//查询当前链表长度
ClearList//清除当前链表
DeleteList//删除当前链表的第几个节点 ";
break;
case 1: cout<<"输入链表深度 n"<<endl; cin>>n; TEMPN=TEMP.CreateList(n);cout<<"深度为"<<n<<"的链表创建成功"<<endl;break;
case 2: n=TEMP.LenthList(TEMPN);cout<<"当前建链表长度为"<<n<<endl;break;
case 3: TEMP.OutputList(TEMPN);cout<<"输出完毕"<<endl;break;
case 4: TEMP.ClearList(TEMPN);cout<<"当前链表清空完毕"<<endl;break;
case 5: cout<<"输入需要删除节点的位置"<<endl; cin>>n; TEMPN=TEMP.DeleteList(TEMPN,n);break;
case 99: cout<<"指令不正确,输入HELP查询可使用指令 或者询问开发者陈景研"<<endl;break;
}
}
}
int main()
{
ListShell();// 启动shell 管理程序
return 0;//一直执行这个程序,理论上不会执行到这一步
}
一周热门 更多>