crazydog2009 发表于 2012-2-8 13:03:15

什么是linux?

1 什么是linux?可以做服务器操作系统,可以做pc操作系统,可以做嵌入试操作系统,这个怎么区分?有什么不同?一个pc的系统,要怎栽掉不必要的东西才可以做成一个嵌入式的操作系统?
2 做嵌入式的时候这个系统具体是怎么运作的?比如我们有网络传输,有串口通信,有按键,有LCD显示。这些操作是怎么传到linux内部的?linux内部又是怎么处理这些信息?是不是linux把内核和外部操作分开的?只预留了一些接口之类的?比如说多线程,如上所述每一个任务分配一个线程,按某个机制来呼醒进而处理?
3 嵌入式系统和普通的单片机软件有多大不同?就像我们的普通手机和智能手机的区别?单任务和多任务的区别?
4 如果只懂得gcc写一个helloworld.c,和嵌入式的距离还有多远?

rtems 发表于 2012-2-8 13:15:09

1. 选择不同的配置,自然就不同了,现在已经不像当年要手工裁剪代码,找个差不多的板子配置改改就好了
2. 你要好好看看操作系统的书,驱动就是为了把操作系统核心和硬件相关部分分开的。至于应用程序线程等等属于应用部分,不同平台差别不大
3. 非常大,非常大,建议先学习操作系统的基础知识
4. 呃,不是一般的远

hqgboy 发表于 2012-2-8 13:48:14

顶。

Helloeveryon 发表于 2012-2-9 08:05:36

mark

aleyn 发表于 2012-2-9 08:21:34

linux = 你牛死

Guoyy 发表于 2012-2-16 20:30:40

能够真正掌握linux的应该很少,不过人的潜能是无限的,一起加油吧

carmili_one 发表于 2012-2-20 10:03:37

我也不懂

lambdaWoo 发表于 2012-2-26 11:08:37

做linux嵌入式,首先得学会怎么用linux,包括系统管理,需要学会一些脚本语言:shell,pyhon,perl等;然后可以做应用层方向的,对底层需求不多,好像做驱动的一般都是电子专业的,即知道硬件也懂得编程;应用过后该是内核、驱动编程了吧。

無智 发表于 2012-3-26 01:37:18

向2楼致敬。

应用程序和底层还是有区别的嘛。

偏向于平台的就学习Linux驱动开发,而学习应用程序开发话,和windows的流程上差不多。
就像helloworld一样,建个文件helloworld.c
#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("....");
    return 0;
}
写个makefile:
OBJS=helloworld
CC=gcc
all:
$(CC) helloworld.c -o $(OBJS)

.PHONY:
clean:
rm -rf $(OBJS)
然后make一下就可以执行二进制文件helloworld了。

如果是做驱动,也可以写个helloworld.c模块试试:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
static int hello_init()
{
    printk(KERN_ALERT "Hello, World!\n");
    return 0;
}
static void hello_exit()
{
    printk(KERN_ALERT "Goodbye, World!\n");
}
module_init(hello_init);
module_exit(hello_exit);
在建一个makefile:
obj-m := helloworld.o
kerneldir=/your/kernel/path
PWD=$(shell pwd)
all:
$(MAKE) -C $(kerneldir) M=$(PWD) modules
clean:
rm -rf helloworld

我觉得,如果楼主想开发一个能够接受网络包的程序,那么需要了解linux环境下的网络编程接口。
它和开发物理网卡驱动不是同一个东西。
就好比shell用的很溜,对于linux环境很熟悉。但是shell不用来开发内核,但是在linux下写程序,尤其是文本界面的时候,熟练应用shell又是推动作用吧。
页: [1]
查看完整版本: 什么是linux?