Linux嵌入式
文章平均质量分 70
荡失路的细路
这个作者很懒,什么都没留下…
展开
-
修改 Zynq 7000 系列 CPU 主频到 800HMz(7045 和 7100)
修改 Zynq 7000 系列 CPU 主频到 800HMz(7045 和 7100)原创 2022-09-09 19:58:08 · 4698 阅读 · 4 评论 -
/usr/bin/ld: cannot find -lncursesw
编译linux内核时出现/usr/bin/ld: cannot find -lncurseswHost# make menuconfig HOSTLD scripts/kconfig/mconf/usr/bin/ld: cannot find -lncurseswcollect2: error: ld returned 1 exit statusscripts/Makefile.host:116: recipe for target 'scripts/kconfig/mconf' failed原创 2021-06-04 11:08:16 · 843 阅读 · 1 评论 -
Non-blocking user input in loop without ncurses.
目录Non-blocking user input in loop without ncurses.ts本文是基于韦东山视频的学习笔记汇总点这Non-blocking user input in loop without ncurses.Posted on April 8, 2007The title sounds a bit awkward, let my briefly explain what is it all about.In my program, I want to wait fo原创 2021-02-15 17:35:29 · 147 阅读 · 0 评论 -
韦东山 课后作业 JZ2440 LCD的文字显示
目录课后作业代码本文是基于韦东山视频的学习笔记汇总点这课后作业修改 lcd_put_ascii 函数,可以指定字符颜色。实现 lcd_put_str 函数,输出字符串,可以换行修改 lcd_put_chinese 函数,可以指定字符颜色。实现 lcd_put_str 函数,可以输出混合的中英文字符,比如“中国 china”,支持自动换行。代码#include <sys/types.h>#include <linux/fb.h>#include <sys/m原创 2021-01-11 12:43:29 · 763 阅读 · 2 评论 -
linux3.4.2内核-LCD驱动程序的移植
目录LCD驱动程序的移植lcd.cfb_test.c按键输入子系统本文是基于韦东山视频的学习笔记汇总点这LCD驱动程序的移植#include <mach/regs-lcd.h>#include <mach/regs-gpio.h>#include <mach/fb.h>修改之后需要重新配置编译内核,把原来的LCD驱动变成模块:<M> S3C2410 LCD framebuffer support。<M> Silicon Moti原创 2021-01-03 19:08:24 · 317 阅读 · 0 评论 -
S3C2440 LCD控制器的设置
目录LCD 控制器LCDCON1的设置LCDCON2的设置LCDCON3的设置LCDCON4的设置LCDCON5的设置FRAME BUFFER START ADDRESS REGISTERLCDSADDR1的设置LCDSADDR2的设置LCDSADDR3的设置Lookup Table RegisterREDLUT的设置GREENLUT的设置BLUELUT的设置Dithering Mode RegisterDITHMODE的设置Temp Palette RegisterTPAL的设置LCD 中断寄存器LCDI原创 2021-01-03 19:04:28 · 1273 阅读 · 0 评论 -
韦东山 fb_test 源码
目录fb_test.cfb.hMakefile本文是基于韦东山视频的学习笔记汇总点这fb_test.c/***************************************** Copyright 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************/ #include <sys/ty原创 2020-12-30 21:16:11 · 790 阅读 · 0 评论 -
按键驱动移植到3.4.2内核
目录LED驱动的移植first_drv.cfirstdrvtest.c按键驱动的移植second_drv.cseconddrvtest.c本文是基于韦东山视频的学习笔记汇总点这以下的移植过程都大同小异,都是先把Makefile文件中的内核编译路径改为自己的3.4.2的内核编译路径(内核要成功编译过),直接make根据错误信息修改错误。LED驱动的移植需要去掉头文件<asm/arch/regs-gpio.h>和<asm/hardware.h>,加上头文件<linux/原创 2020-12-29 22:59:02 · 602 阅读 · 0 评论 -
简单移植内核3.4.2
目录配置内核修改内核时钟配置支持yaffs2本文是基于韦东山视频的学习笔记汇总点这配置内核需要修改默认的的 gcc 编译器,这里用的是gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)vim Makefile# 进去使用命令'/CROSS' 搜索到这两句ARCH ?= ...CROSS_COMPILE ?= ... # 改为ARCH ?= armCROSS_COMPILE ?= arm原创 2020-12-27 00:01:29 · 416 阅读 · 0 评论 -
yaffs2补丁
目录yaffs_mtdif1.cyaffs_mtdif2.cyaffs_vfs.c本文是基于韦东山视频的学习笔记汇总点这yaffs_mtdif1.c/* * YAFFS: Yet another FFS. A NAND-flash specific file system. * * Copyright (C) 2002-2011 Aleph One Ltd. * for Toby Churchill Ltd and Brightstar Engineering * * Created原创 2020-12-26 23:55:57 · 304 阅读 · 0 评论 -
稍简单的字符驱动程序-操作led
目录本文是基于韦东山视频的学习笔记汇总点这原创 2020-12-02 20:50:54 · 145 阅读 · 0 评论 -
最简单的字符驱动程序
目录用户程序和驱动程序1. 定义operation结构体2. open、write 函数3. 注册、卸载驱动函数总结本文是基于韦东山视频的学习笔记汇总点这用户程序和驱动程序1. 定义operation结构体/* 定义结构体,传参给内核 */static const struct file_operations first_drv = { .owner = THIS_MODULE, .open = first_drv_open, .write = first_drv_write,}原创 2020-11-30 23:08:05 · 461 阅读 · 0 评论 -
[无中生有]移植u-boot(2020.7)至 JZ2440
目录下载建立工程本文是基于韦东山视频的学习笔记下载百度u-boot,去官网,点源码,去FTP服务器直接去下载最新的就好。建立工程原创 2020-10-12 23:09:32 · 1185 阅读 · 0 评论 -
用arm-linux-gcc 3.4.5 编译 busybox-1.20.0
目录1. 改Makefile2. 加定义3. 加文件mtd-user.hmtd-abi.hubi-user.h本文是基于韦东山视频的学习笔记汇总点这编译环境是 gcc 3.4.5, make 前需要make menuconfig1. 改Makefile查找 “CROSS” 找到 CORSS_COMPILE = ?改成 CORSS_COMPILE = arm-linux-2. 加定义编译时会有两个变量未定义,定义即可。也可以去掉这个编译模块,这里选的前者。3. 加文件编译时缺少几个文件,原创 2020-08-10 20:31:17 · 509 阅读 · 0 评论 -
jz2440 输入子系统分析
目录步骤本文是基于韦东山视频的学习笔记汇总点这步骤分配一个input_dev结构体设置(能产生哪类事件、能产生这类操作里的哪些事件)注册硬件相关的操作static int buttons_init(void){ int i, ret; /* 1. 分配一个input_dev结构体 */ buttons_dev = input_allocate_device(); /* 2. 设置 */ /* 2.1 能产生哪类事件 */ set_bit(EV_KEY, button原创 2020-05-27 21:26:45 · 197 阅读 · 0 评论 -
Linux按键中断
cat /proc/interrupts查看当前中断exec 5</dev/key_eint_drv打开中断并设为5exec 5<&-关闭中断5原创 2020-05-19 21:48:51 · 798 阅读 · 0 评论 -
最小根文件系统(未完)
目录根文件系统干了什么搞个最小根文件系统/dev/console & /dev/nullinit -> busybox更改如何编译/etc/initab配置文件指定的程序C库镜像yaffs2本文是基于韦东山视频的学习笔记根文件系统干了什么/dev/console/dev/nullinit -> busybox/etc/initab配置文件指定的程序C库搞个...原创 2020-05-10 17:44:26 · 636 阅读 · 0 评论 -
[韦东山]嵌入式Linux学习笔记...吗?
目录硬件部分(Linux嵌入式学习——点个灯(一)Linux嵌入式学习——点个灯(二)Linux嵌入式学习——点个灯(三)Linux嵌入式学习——点个灯(四)Linux嵌入式学习——点个灯(五)流水灯MakefileMakefile基础Makefile函数与实例本文是基于韦东山视频的学习笔记硬件部分(Linux嵌入式学习——点个灯(一)Linux嵌入式学习——点个灯(二)Linux嵌入式学习——点个灯(三)Linux嵌入式学习——点个灯(四)Linux嵌入式学习——点个灯(五)流水灯Mak原创 2020-05-10 12:54:42 · 828 阅读 · 0 评论 -
cache & mmu
目录cache的由来cache的流程本文是基于韦东山视频的学习笔记cache的由来先写一个函数,功能是,输出从1加到100的总和,我们来看一下反汇编是怎样的。没错,函数使用for循环实现的。可以看到,在for循环里面,CPU在不断地读取类似的数据和指令(如ldr r3, [fp, #-16]等等)。问题是,CPU不断地操作的sdram速度很慢啊,而且数据空间临近,命令也相似。可不可...原创 2020-05-10 17:44:01 · 303 阅读 · 0 评论 -
s3c2440 Nor flash
目录总汇读取设备信息设备信息Nor flash 大小扇区数量扇区信息本文是基于韦东山视频的学习笔记总汇Nor flash 相关指令集都说 Nor flash “只读”不可写的,事实上,要写的话用特殊指令集写即可。由于Nor flash是16位的,所以都是对应 word 指令。每次我们在烧写bin文件的时候总看见命令行上面有这些信息,这次我们就来实现一下自己实现打印这些信息。[Ma...原创 2020-05-10 17:44:16 · 253 阅读 · 0 评论 -
print变参
/usr/include/features.h:367:25: fatal error: sys/cdefs.h: No such file or directory解决Ubuntu编译error:fatal error: sys/cdefs.h: No such file or directory–InWhoSome packages could not be authenticated...原创 2020-05-10 17:44:34 · 522 阅读 · 1 评论 -
最简陋的Bootloader
board_init in smdk2410.c (D:\Linux嵌入式\u-boot\u-boot-1.1.6\u-boot-1.1.6\board\smdk2410) : gd->bd->bi_boot_params = 0x30000100;原创 2020-05-10 17:43:41 · 336 阅读 · 0 评论 -
s3c2440 Nand flash
目录总汇寄存器本文是基于韦东山视频的学习笔记总汇寄存器[NFCONF] NAND flash configuration register - 需要配置[NFCONT] NAND flash control register - 需要配置[NFCMMD] NAND flash command set register - 命令寄存器,写命令[NFADDR] NAND flash a...原创 2020-04-19 20:15:13 · 442 阅读 · 0 评论 -
s3c2440 计时器中断
目录总汇寄存器代码优化本文是基于韦东山视频的学习笔记总汇根据手册的示意图,PLCK给出的时钟后,通过预分频器(Prescaler)后,再通过多通道选择器(5:1 MUX)分频,到达定时器。定时器里有定时初值,当初值减到0时就会产生中断。加载值,硬件可以设置为自动加载,当初值为0时便自动为加载值对比值(这次不用)定时器中断,类比按键中断,有几个额外工作要做设置定时器初值...原创 2020-04-05 15:52:39 · 373 阅读 · 0 评论 -
S3C2440 按键中断
目录外部(按键)中断设置本文是基于韦东山视频的学习笔记根据电路原理图S2 ~ EINT0 //按键2对应中断0S3 ~ EINT2 //按键3对应中断2S4 ~ EINT11 //按键4对应中断11S5 ~ EINT19 //按键5对应中断19中断也是一种异常,但中断较为复杂一点,除了一般异常的处理流程保护现场处理恢复现场还需要中断源的 使能/配置中断控...原创 2020-04-04 17:49:49 · 549 阅读 · 0 评论 -
[und&swi]异常模式
目录und 异常(无定义异常)swi 异常(软中断异常)本文是基于韦东山视频的学习笔记und 异常(无定义异常)我们在执行 main 函数之前加入句子.word 0xdeadc0de //故意加入未定义句子首先,代码执行至此,出现了 und 异常,根据异常向量表出现 und 异常后会跳转到 0x00000004 地址去处理异常,所以我们需要在0x00000004 加入处理异常的...原创 2020-04-04 09:59:13 · 431 阅读 · 0 评论 -
S3C2440 中CPU 的七种模式
目录本文是基于韦东山视频的学习笔记OPERATING MODESARM920T supports seven modes of operation:• User (usr): The normal ARM program execution state• FIQ (fiq): Designed to support a data transfer or channel process...原创 2020-03-30 19:50:18 · 433 阅读 · 0 评论 -
c语言实现代码重定位和bss段清零
目录本文是基于韦东山视频的学习笔记首先要通过 c 语言实现,就要搞清楚一个问题:怎么才能在 c 语言中获得代码的运行地址/加载地址和bss段开始结束地址?两种方法通过汇编传入函数参数通过链接脚本获取然而第一种方法是不完全的 c 语言实现,我们来实现第二种,在连接脚本里SECTIONS{. = 0X30000000;__code_start = .; //我们加入这句话,以...原创 2020-03-29 14:07:18 · 833 阅读 · 0 评论 -
链接脚本的改进
copy: ldr r4, [r1] str r4, [r2] add r1, r1, #4 add r2, r2, #4 cmp r2, r3 ble copy ;改为小于等于,因为现在是复制4字节 /*bss段清零*/ ldr r1, =bss_start ldr r2, =bss_end mov r3, #0clean_bss: str r3, [r1] ...原创 2020-03-28 21:43:03 · 290 阅读 · 0 评论 -
重定位的引入
目录引入段本文是基于韦东山视频的学习笔记引入为什么要有重定位,什么是重定位?我们知道,CPU可以从一些特定的芯片直接读写数据如SDRAM,Nor和网卡,但是不同于Nor,Nand是不可以直接和CPU交互滴。那既然这样,当程序烧写到Nand时,CPU是怎么运行程序的呢。其实啊,Nand启动时,Nand的前4k内存都会被复制到SRAM当中(通过硬件),CPU又是可以直接和SRAM读写数据的,...原创 2020-03-25 21:09:34 · 306 阅读 · 0 评论 -
S3C2440A SDRAM
S3C2440A SDRAM根据原理图本文是基于韦东山视频的学习笔记根据原理图根据原理图看得出,SDRAM的片选信号是nGCS6,在文档直接搜索关键字,发现用的是BANK6, 地址从0x3000_0000开始。如何写1字节数据进SDRAM呢。首先是因为sdram是32bit的,CPU和sdram数据交换时,只能每次操作32位数据。CPU会把32bit的数据给内存控制器,内存控制器会发出DQ...原创 2020-03-22 20:01:14 · 229 阅读 · 0 评论 -
S3C2440A 内存接口概念
S3C2440A 内存接口概念本文是基于韦东山视频的学习笔记这一课回答了几个问题 CPU怎么控制其他设备如GPIO, UART, Nor flash, Nand flash的就是这样控制咯,其实可以先分两大类设备(把CPU外的都先称为设备吧)。CPU可以直接把地址传给他的设备CPU不可以直接把地址传给他的设备第一种,CPU直接寻址访问,然后设备直接把数据送回CPU,如Nor...原创 2020-03-19 19:36:21 · 205 阅读 · 0 评论 -
S3C2440A UART
S3C2440A UARTUART波特率UART ULCON0 普通配置UART UCON0普通配置UART状态寄存器波特率寄存器配置引脚本文是基于韦东山视频的学习笔记UART由于对UART还是比较熟悉的,记得以前还试过用引脚模拟,就不写原理了。这次实现putchar,getchar 函数,波特率115200以最简单的方式实现UART通信,而通信最重要的两点,配置好即可。波特率传输...原创 2020-03-17 18:39:57 · 435 阅读 · 0 评论 -
S3C2440A 时钟系统
S3C2440A 时钟系统时钟系统本文是基于韦东山视频的学习笔记时钟系统S3C2440A_UserManual_Rev13.pdfOVERVIEWThe Clock & Power management block consists of three parts: Clock control, USB control, and Power control.The Clock ...原创 2020-03-16 18:54:18 · 404 阅读 · 0 评论 -
按键控制LED
按键控制LED判断按键状态按键原理图如下,按键分别是EINT0、2、11, 分别对应引脚是GPF0、GPF2、GPG3,原理图就不详贴了。同样的,关于GPF寄存器可以看回 Linux嵌入式学习——点个灯(二),关于GPG寄存器如下图,大同小异。GPFCON寄存器是0x56000050,而GPGCON寄存器是0x560000060,如此类推。需要注意的是,设置按键需要把寄存器设置为输入(Inp...原创 2020-03-15 19:52:14 · 927 阅读 · 0 评论 -
流水灯
流水灯汇编文件看门狗代码C文件汇编文件看门狗上篇的程序实际上是有缺陷的,在程序运行一段时间后,程序会自动由头重新开始,这都是开门狗的作用,目前都不用开门狗,所以这次先把看门狗关了。先在手册上找到这一章,看来寄存器就是WTCON,第零位就是开关的,把第零位设置为0就可以了,简单。代码不仅在开头关闭了开门狗,也加入了自动判别nor启动和nand启动的代码。.text.global _...原创 2020-03-15 19:50:46 · 262 阅读 · 0 评论 -
C 语言&GCC
C 语言--指向char和int的指针我也不知道怎么说。64位机,char是1字节,int是4字节,凡是指针都是8字节32位机,char是1字节,int是4字节,凡是指针都是4字节看得出,指针就是存放地址的,会根据系统的寻址能力变化。没啥说的。...原创 2020-03-05 20:34:31 · 826 阅读 · 0 评论 -
韦东山Linux嵌入式学习——硬件复习
Linux嵌入式学习——点个灯(五)C语言汇编makefile本文是基于韦东山视频的学习笔记C语言之前一直都是用汇编来点灯,这次我们用最熟悉的C语言来点灯。思路很简单,分别把GPFCON寄存器和GPFDAT寄存器设置为输出模式和输出零就可以了。也就是int mian(){ unsigned int *pGPFCON = 0x56000050; //指针变量pGPFCON设置为地址0x...原创 2019-11-20 22:50:40 · 260 阅读 · 0 评论 -
韦东山Linux嵌入式学习——硬件复习
Linux嵌入式学习——点个灯(四)勘误汇编分解nLED1.dis本文是基于韦东山视频的学习笔记勘误在前一篇的博文中,代码有一个地方敲错了。.text.golbal _start_start: LDR R1, =0x56000050 LDR R0, =0x0100 STR R0, [R1] LDR R1, =0x56000054 LDR R0, =0x0010 ...原创 2019-11-06 21:21:04 · 289 阅读 · 0 评论 -
韦东山Linux嵌入式学习——硬件复习
Linux嵌入式学习——点个灯(三)原创 2019-09-25 21:13:37 · 390 阅读 · 1 评论