U Boot_ not enough room for program headers, try linking with N

在编译u-boot的时候出现了以下错误: arm-linux-gnueabi-ld.bfd: u-boot: Not enough room for program headers, try linking with -N arm-linux-gnueabi-ld.bfd: final link failed: Bad value Makefile:1208: recipe for target 'u-boot' failed 解决方案可以参考这个patch; 或者在Makefile中添加一条语句,修改链接参数 FLAGS_u-boot += $(call lmZ-option, --no-dynamic-linker) 具体如下图所示: [Read More]
Tags: uboot

Ubuntu 系统 make menuconfig 的依赖包ncurses安装

Linux内核或者u-boot进行make menuconfig的时候,如果系统上没有安装ncurses,就会出现以下报错 *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel or libncurses-dev *** depending on your distribution) and try again. *** scripts/kconfig/Makefile:229: recipe for target 'scripts/kconfig/dochecklxdialog' failed make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1 Makefile:503:... [Read More]
Tags: Ubuntu

Shell bash终端中输出的颜色和格式详解

ANSI/VT100终端和终端仿真器不只是能够显示黑色和白色文本; 由于转义序列,它们可以显示颜色和格式化文本。这些序列由Escape字符(通常用“^[” 或”<Esc>“表示)组成,后跟一些其他字符:”<Esc>[FormatCodem“。 在Bash中,可以使用以下语法获取字符: `\e` `\033` `\x1B` 例子: [Read More]
Tags: shell

Linux内核驱动学习(十)input子系统详解

前言 这次主要会学习Linux中对于输入设备统一封装的框架,在计算机组成原理中,我们可以知道计算机的组成主要分为五个部分:控制器,运算器,存储器,输入,输出。可见,输入作为其中的一个子系统,但是对于众多的设备来说,需要一套统一的规范。所以,在嵌入式系统中的外设,鼠标、键盘、按键、G-Sensor等等都可以注册为Input设备。Linux在用户层提供了相应的接口读取数据,这里我暂时只介绍在上一篇文章的基础上,如何编写一个Input驱动。 [Read More]
Tags: Linux驱动

Linux内核驱动学习(九)gpio外部输入的处理

前言 前面是如何操作GPIO进行输出,这里我重新实现了一个gpio的驱动,可以获取外部信号的输入。gpio-demo.c中已经包括检测一个gpio的信号,并且包含了中断和轮询两种方式,可以通过设备树里的mode属性进行选择。 设备树 本文检测的输入引脚是GPIO3_D0,具体的设备树如下所示; gpio-demo { compatible = "gpio-demo"; input-gpio = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; mode = <1>; // 0:poll 1:interrupt poll_time = <1000>; //ms }; compatible:设备兼容属性为gpio-demo,与后面的驱动代码中的 gpio_demo_of_match[] = { { .compatible = "gpio-demo"}, {}, } 需要相同; input-gpio:这个属性值通过of_get_named_gpio来获取; mode:用于判断当前的工作模式是轮询还是中断; poll_time:轮询模式下的周期,间隔多少毫秒会读取一次gpio的状态; [Read More]
Tags: Linux驱动