基于斯道S3C2410的Linux内核编译

发布者:清新生活最新更新时间:2016-11-27 来源: eefocus关键字:S3C2410  Linux  内核编译 手机看文章 扫描二维码
随时随地手机看文章

1。编译缘由
      使用斯道的zImage文件,我自己编译的Mplayer不能使用,必须加--nosound选项才能播放视频。后来见一篇文章说是Linux内核音频驱动的问题,所以决定重新编译内核。

2。编译工具及资料
2。1内核版本:斯道S3C2410普及版2光盘自带的
2。1交叉编译器:cross-2.95.3.tar.bz2,可能是在ARM官方的ftp服务器上下的,我忘了。

3。编译过程
3。1拷贝cross-2.95.3.tar.bz2到/usr/local/arm/目录,并转到/usr/local/arm目录
sudo cp cross-2.95.3.tar.bz2 /usr/local/arm
sudo cd /usr/local/arm
3。2 解压cross-2.95.3.tar.bz2
sudo tar -jxvf cross-2.95.3.tar.bz2
3。3修改~/.bashrc
sudo gedit ~/.bashrc
在最后加一句 export PATH=/usr/local/arm/2.95.3/bin:$PATH
3。4将光盘中提供的linux-sd.tar.gz和mtd.tar.gz拷贝到/usr/src目录
sudo cp linux-sd.tar.gz /usr/src/
sudo cp mtd.tar.gz /usr/src
3。5 解压以上两个文件并转到生成的linux目录
sudo tar -zxvf linux-sd.tar.gz
sudo tar -zxvf mtd.tar.gz
sudo cd linux
3。6 修改 linux/drivers/sound/s3c2410-uda1341.c中的函数smdk2410_audio_open()如下:
sudo gedit drivers/sound/s3c2410-uda1341.c
static int smdk2410_audio_open(struct inode *inode, struct file *file)
{
    int cold = !audio_active;

    DPRINTK("audio_open\n");

    if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
        if (audio_rd_refcount || audio_wr_refcount)
            return -EBUSY;
        audio_rd_refcount++;
    } else if ((file->f_flags & O_ACCMODE) == O_WRONLY) {
        if (audio_wr_refcount)
            return -EBUSY;
        audio_wr_refcount++;
    } else if ((file->f_flags & O_ACCMODE) == O_RDWR) {
        if (audio_rd_refcount || audio_wr_refcount)
            return -EBUSY;
        audio_rd_refcount++;
        audio_wr_refcount++;
    } else
        return -EINVAL;

    if (cold) {
        audio_rate = AUDIO_RATE_DEFAULT;
        audio_channels = AUDIO_CHANNELS_DEFAULT;
        audio_fragsize = AUDIO_FRAGSIZE_DEFAULT;
        audio_nbfrags = AUDIO_NBFRAGS_DEFAULT;
        init_s3c2410_iis_bus_tx();
        if ((file->f_mode & FMODE_WRITE)){
        //        init_s3c2410_iis_bus_tx();
                audio_clear_buf(&output_stream);
                if(!output_stream.buffers && audio_setup_buf(&output_stream))
                return -ENOMEM;
        }
        if ((file->f_mode & FMODE_READ)){
        //        init_s3c2410_iis_bus_rx();
                audio_clear_buf(&input_stream);
        }
    }

//    MOD_INC_USE_COUNT;

    return 0;
}
3。7修改Makefile中的变量CROSS_COMPILE(因为设置的是绝对路径,所以3。3步好像是不必要的)
sudo gedit Makefile

CROSS_COMPILE     = /usr/local/arm/2.95.3/bin/arm-linux-
3。8如果先前编译过,但没有成功,要先make clean
3。9编译生成zImage文件
sudo make zImage

4。编译中碰到的问题
4。1一开始我在OpenSUSE 10。3中编译,但此版本的Linux中权限管理好像有些问题,老是出现 “make: ***/usr/src/linux 是一个目录。停止。"的错误.后来转到Ubuntu 8。04beta版中才没有这个错误。
4。2使用3。3。2的arm-linux-gcc交叉编译器时会出现
blkpg.c: In function `blk_ioctl':
blkpg.c:250: error: asm-specifier for variable `__r1' conflicts with asm clobber list
blkpg.c:250: confused by earlier errors, bailing out
make[3]: *** [blkpg.o] Error 1
make[3]: Leaving directory `/home/andante/2.4.18-rmk7/drivers/block'
make[2]: *** [first_rule] Error 2
make[2]: Leaving directory `/home/andante/2.4.18-rmk7/drivers/block'
make[1]: *** [_subdir_block] Error 2
make[1]: Leaving directory `/home/andante/2.4.18-rmk7/drivers'
make: *** [_dir_drivers] Error 2
的错误,后来改用2。95。3版本的交叉编译器才成功。

关键字:S3C2410  Linux  内核编译 引用地址:基于斯道S3C2410的Linux内核编译

上一篇:Linux-2.6.14内核在S3C2410上的移植
下一篇:ARM移植MPlayer

推荐阅读最新更新时间:2024-03-16 15:22

开发板学习Day8:第009课 gcc和arm-linux-gcc和Makefile
第001节_gcc编译器1_gcc常用选项__gcc编译过程详解 一,gcc简介 gcc : GNU Compiler Collection 特点:功能强大、功能灵活、多平台(X86、Arm);既支持宿主的开发,又支持交叉编译。 二,gcc编译程序过程(以test.c为例) 一个CC++程序至少需要预处理(preprocessing)、编译(compilation)、汇编(assembly)、链接(linking)这四步才能称为可执行文件。下面进行详细介绍: - 预处理(Pre-Processing) 此过程主要处理C源文件中的”#ifdef”、”#include”、”#define”等预处理命令,宏定义展开,并且将i
[单片机]
开发板学习Day8:第009课 gcc和arm-<font color='red'>linux</font>-gcc和Makefile
linux内核中的信号机制--从用户层到内核
Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csdn.net/ce123) 1.简介 如果进程要处理某一信号,那么要在进程中注册该信号。注册信号主要用来确定信号值及进程针对该信号值的动作之间的映射关系,即进程将要处理哪个进程和该信号被传递给进程时,将执行何种操作。主要有两个函数实现信号的注册:signal()和sigaction()。 2.signal() signal()的函数原型如下: view plain copy print ? void (*signal(int signum, vo
[单片机]
风河公司取得FSM实验室Hard Real-Time Linux技术
全球领先的设备软件优化(DSO)厂商风河系统公司日前宣布,风河已取得由FSM实验室(Finite State Machine Labs, Inc, FSMLabs)开发的设备软件业界唯一的商用级“硬”实时(hard real-time)Linux技术——RTLinux。风河公司此次获得了该项技术的全套知识产权,包括专利权、著作权、商标注册和其他相关产品的所有权。按照购买协议中的有关规定,风河公司还将取得今后在嵌入式应用领域的RTLinux用户runtime收益权。随着购买协议的生效,风河公司将把hard real-time技术全面集成到其业界领先的基于Linux的设备软件平台中,为风河Linux用户带来更好的性能体验。 通过此次投资
[焦点新闻]
面对不断升级的内核如何学习linux设备驱动
  面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的特性、搭建新环境是一项非常繁琐的事情。本文想从以下3个方面探讨一下“面对不断升级的内核,如何学习linux设备驱动”。   内核发展的现状及其对技术人员的影响   Linux目前主要维护2.4和2.6两个内核版本。在http://www.kernel.org/ 网站上已经可 以下载到最新的2.6内核linux-2.6.31,及最新的2.4内核linux-2.4.37。稳定版本号基本上是1~3月更新一次,如:
[单片机]
Linux之ARM(IMX6U)裸机主频和时钟配置
I.MX6U 系列标准的工作频率为 528MHz,有些型号甚至可以工作到 696MHz,但是默认的工作频率为396MHz,这就造成了浪费了,本次我们来配置主频时钟使其工作在528MHz,以及其他的外设时钟源都工作在NXP推荐的工作频率。 1、I.MX6U 时钟系统详解 I.MX6U 的系统主频为 528MHz,有些型号可以跑到 696MHz,但是默认情况下内部 boot rom 会将 I.MX6U 的主频设置为 396MHz。我们在使用 I.MX6U的时候肯定是要发挥它的最大性能,那么主频肯定要设置到 528MHz(其它型号可以设置更高,比如 696MHz),其它的外设时钟也要设置到 NXP 推荐的值。可参考NXP官方参考手册
[单片机]
<font color='red'>Linux</font>之ARM(IMX6U)裸机主频和时钟配置
基于S3C2410的WLAN智能住宅控制终端的设计
摘要:信息技术在建筑行业的高速发展使得智能住宅和智能小区迅速崛起并成长为巨大的新兴产业。文章提出了一个基于S3C2410的高性能、低价格的WLAN智能住宅控制终端的设计方案。该方案依托成熟的无线局域网技术,可实现智能小区建设所需的安全防范、管理自动化和信息自动化的功能。 关键词:WLAN;S3C2410;智能小区;智能住宅 1 前言 信息技术在建筑行业的逐步渗透,带动了智能大厦、智能住宅以至于智能小区的高速发展。这一新兴产业集现代建筑技术、电子技术、通讯技术与控制技术为一体,正在迅速崛起并成长壮大。 智能住宅小区须具备以下的基本特征和功能: ●安全自动化(Security Automation SA): 防盗监控、
[应用]
关于Linux下AT91SAM9261的RS485驱动
AT91SAM9261和ATMEL其它型号的ARM处理器使用高度相似的USART外设,因 而驱动程序也具有高度的相似性,而且USART硬件支持485模式,用RTS信号作为485的收发控制。在使用中,只要将其置为485模式,其余的操作和 普通的232操作一模一样,RTS的翻转是自动的。 我的板子上使用USART0扩展了一个485接口,而Linux原有串口驱动只支持普通的232模式,为了在Linux下方便地使用485接口,需要对原来的驱动程序稍加改动。 有关的文件 arch/arm/mach-at91/目录下: at91sam9261_devices.c中的相关函数(不用改): at91_add_device_serial()
[单片机]
Linux下s3c6410的GPIO操作(7)
没想到一个小小的GPIO操作函数,竟然写了七篇博客,这应该算是最后一篇了。 1、s3c6410的GPIO操作函数主要涉及到三个文件,如下所示: arch/arm/plat-s3c64xx/gpiolib.c linux/arch/arm/plat-s3c/gpio.c linux/arch/arm/plat-s3c/gpio-config.c 这三个文件中的很多函数都已经讲到了,可以说基本上都讲了,当然,下面这两个函数没讲: int s3c_gpio_cfgpin(unsigned int pin, unsigned int config) { struct s3c_gpio_chip *chip =s
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved