【嵌入式】S3C2410平台移植linux 2.6.14内核

嵌入式Linux内核移植 嵌入式Linux内核移植姓名:成 炼  学号:081141实验目的l  了解Linux内核源代码的目录结构及各目录的相关内容l  了解Linux内核各配置选项内容和作用l  掌握Linux内核配置文件的作用l  掌握Linux内核的编译过程l  掌握将新增内核代码加入到Linux内核结构中的方法 实验指引尽管目前Linux2.6版本内核已经增加了很多对A 阅读详情

小续

第一次接触内核的东西,有点小激动啊

激动归激动,这实验还是要继续做下去,书上三两句话就带过去的,剩下的就留给我们了,着实考验动手能力啊

当编译过内核之后,发现这个过程也不复杂嘛(复杂的是内核的配置),不过对于没接触过的人来说,也能够折腾一段时间的了,所以记下这个过程,其中也有些需要注意的地方,然后给没接触过的人分享下


环境如下

操作系统:ubuntu 12.04LTS

交叉编译工具:arm-linux-gcc 3.2

开发板:FS2410

linux内核:linux 2.6.14

 
  1. mystery@lcw:~/Downloads$ cat /etc/issue

  2. Ubuntu 12.04.2 LTS \n \l

  3. mystery@lcw:~/Downloads$ arm-linux-gcc -v

  4. Reading specs from /usr/local/arm/bin/../lib/gcc-lib/arm-linux/3.2/specs

  5. Configured with: ./configure --target=arm-linux --prefix=/usr/local/arm/ --with-headers=/home/sylam/armbuild/src/linux/include --disable-shared --disable-threads --enable-languages=c : (reconfigured) ./configure --target=arm-linux --prefix=/usr/local/arm/ --with-headers=/home/sylam/armbuild/src/linux/include

  6. Thread model: posix

  7. gcc version 3.2

  8. mystery@lcw:~/Downloads$ ls /home/mystery/Downloads/  

  9. cross-3.2.tar.bz2                      linux-2.6.14

  10. eclipse-cpp-juno-SR2-linux-gtk.tar.gz  linux-2.6.14.tar.bz2

  11. google-chrome-stable_current_i386.deb  wps-office_8.1.0.3724~b1p2_i386.deb

  12. jdk-7u17-linux-i586.tar.gz             wps_symbol_fonts.zip

  13. mystery@lcw:~/Downloads$  



准备工作

决定在哪里编译你的内核
你需要决定你要在哪里编译你的ARM Linux内核。一个比较好的位置就是在你的home目录,我这里直接下载了解压后就编译了,所以就在download目录下进行的

决定内核的版本号
你需要决定你想要编译哪个版本的linux内核。大多数然想要编译最新版本的稳定内核。有一套表示版本号的机制,可以帮助你决定识别一个特定的发行版本。
对于任何的内核版本x.y.z,
* x -这个是主版本号
* y -这个是次版本号,这里:
偶数表示“稳定的”内核发行
奇数表示"开发"或者"beta"内核发行版本,相对来说不稳定。
* z -这是这个内核的补丁级别。
这个版本号表示了内核版本的主线。我这里按照书上的,选择了linux 2.6.14的内核,大家在www.kernel.org可以找到下载地址哈。


开始工作

1. 首先,我们需要修改目录树根下的Makefile,指明交叉编译器,找银行也要先说明去哪家银行嘛,哈哈

找到
ARCH            ?= $(SUBARCH)
CROSS_COMPILE   ?=
修改成

 
  1. 192 ARCH            ?= arm

  2. 193 CROSS_COMPILE   ?= arm-linux-gcc

<注意1>这里我开始出现了一个错误,在打arm的时候后面多打了一个空格,结果后面编译的时候出现

 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig                            

  2. make: *** /home/mystery/Downloads/linux-2.6.14/arch/arm: Is a directory.  Stop.  

  3. mystery@lcw:~/Downloads/linux-2.6.14$ vim Makefile  

好吧,第一次还是老实的慢慢打代码,切勿多出空格来了

2. 然后我们需要设置一下环境变量,知道去哪家银行取钱,然后需要知道银行在哪里啊

 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ export  PATH=$PATH:/usr/local/arm/bin/

这个路径当然是交叉编译器的位置了,在配置交叉编译器的时候,其实就已经把这个路径写入到配置文件去了,这里主要是说明需要指明银行的地点哈

3. 去银行总得有点事做吧,现在就来配置下这个清单,我也是第一次哈,所以内核产生文件就直接复制了

 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ cp arch/arm/configs/smdk2410_defconfig .config

<注意2>这里的.config文件应该由配置得到的,但是这之前,我也不知道怎么才算配置成功,对吧,所以先看结果,再回过头来学习,就容易多了,不过这过程还是要说清楚

4. 知道要去银行干什么了,下面就直接去银行与工作人员交涉吧。输入内核配置命令,进行内核选项的选择

内核支持4种不同的配置方法,这几种方法只是与用户交互的界面不同,其实现的功能是一样的;四种方法都是通过读取上面的配置文件“.config”隐藏文件,4种方法如下

make config : 基于文本的最为传统的配置界面,不推荐使用  make menuconfig : 基于文本选单的配置界面,字符终端下推荐使用  make xconfig : 基于图形窗口模式的配置界面,X-Window下推荐使用  make oldconfig : 自动读入“.config”配置文件,并且只要求用户设定上一次没有设定 过的选项

在这4种模式中,make menuconfig使用最为广泛,我这里也使用这种哈

 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig

  2. HOSTCC  scripts/basic/fixdep

  3. scripts/basic/fixdep.c: In function ‘traps’:

  4. scripts/basic/fixdep.c:368:2: warning: dereferencing  

  5. ………………………

  6. ………………………

  7. >> Unable to find the Ncurses libraries.

  8. >>

  9. >> You must install ncurses-devel in order

  10. >> to use 'make menuconfig'

  11. make[2]: *** [scripts/lxdialog/ncurses] Error 1

  12. make[1]: *** [menuconfig] Error 2

  13. make: *** [menuconfig] Error 2

代码有点长,中间省略了。

呃,出错了,不要急,看看错误原因:

 
  1. >> Unable to find the Ncurses libraries.

  2. >>

  3. >> You must install ncurses-devel in order

  4. >> to use 'make menuconfig'

意思是不能找到Ncurses libraries,你必须在这之前安装ucurses工具,好吧,照做
 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ sudo apt-get install ncurses-dev

  2. [sudo] password for mystery:  

  3. Reading package lists... Done

< 注意3>ncurses用于make menuconfig界面显示
后面我无意间又发现了一个错误
 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig

  2.  HOSTCC  scripts/lxdialog/checklist.o

  3.  HOSTCC  scripts/lxdialog/inputbox.o

  4.  HOSTCC  scripts/lxdialog/lxdialog.o

  5. ……………………

  6. scripts/kconfig/mconf arch/arm/Kconfig

  7. # using defaults found in .config

  8. .config:622: trying to assign nonexistent symbol DEVFS_FS

  9. .config:622: trying to assign nonexistent symbol DEVFS_FS

  10. .config:623: trying to assign nonexistent symbol DEVPTS_FS_XATTR

  11. Your display is too small to run Menuconfig!

  12. It must be at least 19 lines by 80 columns.

  13. make[1]: *** [menuconfig] Error 1

  14. make: *** [menuconfig] Error 2


中间也省略了一些哈,你找到错误说明了吗:
 
  1. Your display is too small to run Menuconfig!

  2. It must be at least 19 lines by 80 columns.


<注意4>意思是说你的显示屏太小了,容不下Menuconfig,至少需要19*80的空间,好吧,照做

5. 下面就开始和银行人员交涉吧

 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig

  2. scripts/kconfig/mconf arch/arm/Kconfig

  3. #

  4. # using defaults found in .config

  5. #

  6. .config:11: trying to assign nonexistent symbol GENERIC_IOMAP

配置选项出来了有木有啊

<注意5>在各级子菜单项中,选择相应的配置时,有3种选择,它们代表的含义分别如下

Y:将该功能编译进内核

N:不将该功能编译进内核

M:将该功能编译成可以在需要时动态插入到内核中的模块

在编译内核的过程中,最麻烦的事情就是配置这步工作了,初次接触linux内核的开发者还真弄不清楚如何选取这些选项,还好这些配置大部分选项都可以使用其默认值,只有一小部分需要根据用户不同的需要选择

<注意6>选择的原则就是:将与内核其它部分关系较远且不经常使用的部分功能编译成为可加载模块,这有利用减小内核的长度,减小内核消耗的内核,简化该功能相应的环境改变时对内核的影响,不需要的功能就不要选,与内核关系紧密而且经常使用的部分功能代码直接编译到内核中

我们进入第二项“通用设置”看看

 
  1. Linux Kernel v2.6.14 Configuration                                              

  2. ------------------------------------------------------------------------------  

  3. +----------------------------- General setup -----------------------------+    

  4. |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |    

  5. |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |    

  6. |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |    

  7. |  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  <>       |    

  8. | +---------------------------------------------------------------------+ |    

  9. | |()  Local version - append to kernel release                         | |    

  10. | |[*] Automatically append version information to the version string (N| |    

  11. | |[*] Support for paging of anonymous memory (swap)                    | |    

  12. | |[*] System V IPC                                                     | |    

  13. | |[ ] POSIX Message Queues                                             | |    

  14. | |[ ] BSD Process Accounting                                           | |    

  15. | |[*] Sysctl support                                                   | |    

  16. | |[ ] Auditing support                                                 | |    

  17. | |[ ] Support for hot-pluggable devices                                | |    

  18. | +v(+)-----------------------------------------------------------------+ |    

  19. +-------------------------------------------------------------------------+    

  20. |                    <Select><Exit><Help>                     |    

  21. +-------------------------------------------------------------------------+  

<注意7>大家注意到了吧,这里选择前面有中括号和圆括号,其实还有个尖括号。用空格键选择相应的选项时会发现中括号中要么是空,要么是“*”;尖括号中可能是空/“*”和“M”,分别表示包含选项/不包含选项和编译成模块;圆括号的内容是要求用户在所提供的几个选项中选择一项。

上面是什么意思呢?我解释下哈。

第一个是圆括号,就是让你从下面的选项中进行选择;我简单的翻译下哈:

( )本地版本-添加到内核发行版

[*]自动添加版本信息到原版本信息后面

[*]支持匿名分页存储

[*]支持系统V IPC通信机制

[  ]支持POSIX消息队列

…………

下面很多,就不看了哈,上面的意思就是:把(中括号中选择了的)自动添加版本信息到原版本信息后面/支持匿名分页存储/支持系统V IPC通信机制等等添加到新的内核版本中去,这下应该懂了吧;至于尖括号选项,就是前面说的Y/N/M,这里就不多说了啊

配置内核主要是根据你需要哪些功能,大家按照<注意6>进行配置就是了


6. 等配置好了,就把工作交给银行人员吧
 
  1. mystery@lcw:~/Downloads/linux-2.6.14$ make zImage

  2. make: arm-linux-gccgcc: Command not found

  3.  CHK     include/linux/version.h

  4.  UPD     include/linux/version.h

  5.  SPLIT   include/linux/autoconf.h -> include/config/*

  6.  SYMLINK include/asm-arm/arch -> include/asm-arm/arch-s3c2410

  7.  Generating include/asm-arm/mach-types.h

  8.  SYMLINK include/asm -> include/asm-arm

  9.  CC      arch/arm/kernel/asm-offsets.s

  10. /bin/sh: 1: arm-linux-gccgcc: not found

  11. make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 127

  12. make: *** [prepare0] Error 2

不是吧,这什么人品啊,又是Error,看下错误原因

  
  1. make: arm-linux-gccgcc: Command not found

  2.  CHK     include/linux/version.h

arm-linux-gccgcc命令没有找到,为什么是arm-linux-gccgcc ?

排错

1) 命令没有找到?首先看下环境配置,这里我还特意用root权限来看的,可以看到环境变量是对的

  
  1. root@lcw:/home/mystery/Downloads/linux-2.6.14# echo $PATH

  2. /opt/eclipse:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/jdk1.7.0_17/bin:/usr/local/arm/bin

2) 环境变量没错,那就是配置命令错了,这个arm-linux-gccgcc命令从哪里来的呢?肯定是Makefile了

这是我们之前第一步配置的

  
  1. 192 ARCH            ?= arm  

  2. 193 CROSS_COMPILE   ?= arm-linux-gcc  

这里明明是arm-linux-gcc,为什么make出来就成了arm-linux-gcc呢?看下Makefile下面一点的东西
 
  1. 195 # Architecture as present in compile.h                                          

  2. 196 UTS_MACHINE := $(ARCH)                                                          

  3. 197                                                                                  

  4. 198 # SHELL used by kbuild                                                          

  5. 199 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \                  

  6. 200           else if [ -x /bin/bash ]; then echo /bin/bash; \                      

  7. 201           else echo sh; fi ; fi)                                                

  8. 202                                                                                  

  9. 203 HOSTCC          = gcc

  10. 204 HOSTCXX         = g++                                                            

  11. 205 HOSTCFLAGS      = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer            

  12. 206 HOSTCXXFLAGS    = -O2  

简单的翻译一下(外语水平有限哈):
第一句是注释,说的是:当前compile.h中体系结构
第二句,指明我们的硬件平台,machine认识吧,机器
下面一段是编译时使用到的shell语句,是指明编译时用的bash,命令行解释工具
最后红色的是重点!可以看到它们是由HOST+**构成,从后面的赋值来看,我的理解是:
HOST即宿主机
CC即C编译器
CXX即C++编译器(这里可能指面向对象的编译器,通俗的就是C++了)
FLAGS即标志,这里指明的是编译标志,如Wall就是警告一类的,O2是优化一类的
< 注意8>现在应该知道为什么是arm-linux-gccgcc而不是arm-linux-gcc了吧,CROSS_COMPILE只是编译器的前辍,所以把这个错误改正过来,另外后面我为了方便,直接把编译器路径写到里面去了
 
  1. 192 ARCH            ?= arm                                                          

  2. 193 CROSS_COMPILE   ?= /usr/local/arm/bin/arm-linux-  

3) 重新编译
 
  1. root@lcw:/home/mystery/Downloads/linux-2.6.14# make zImage                            

  2.  CHK     include/linux/version.h

  3. make[1]: `include/asm-arm/mach-types.h' is up to date.

  4.  CC      arch/arm/kernel/asm-offsets.s

  5. arch/arm/kernel/asm-offsets.c:38:2: #error Your compiler is too buggy; it is known to miscompile kernels.

  6. arch/arm/kernel/asm-offsets.c:39:2: #error Known good compilers: 2.95.3, 2.95.4, 2.96, 3.3

  7. make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1

  8. make: *** [prepare0] Error 2

好吧,错误原因
 
  1. arch/arm/kernel/asm-offsets.c:38:2: #error Your compiler is too buggy; it is known to miscompile kernels.

  2. arch/arm/kernel/asm-offsets.c:39:2: #error Known good compilers: 2.95.3, 2.95.4, 2.96, 3.3

意思是说:你的编译器有太多的bug了,它只是一个微内核,下面还介绍了几个优秀的编译器版本
4) 好吧,我的版本是3.2的,无语之下,重新下载一个2.95.3(主要是没找到高版本的,好像要自己配置这个工具链,但是现在我也没配置过,先把这个问题解决掉,然后自己配置)
 
  1. root@lcw:/home/mystery/Downloads/linux-2.6.14# source /etc/bash.bashrc  

  2. root@lcw:/home/mystery/Downloads/linux-2.6.14# echo $PATH

  3. /opt/eclipse:/opt/eclipse:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/jdk1.7.0_17/bin:/usr/local/arm/bin:/opt/jdk1.7.0_17/bin:/usr/local/2.95.3/bin

  4. root@lcw:/home/mystery/Downloads/linux-2.6.14# arm-linux-gcc -v

  5. Using builtin specs.

  6. gcc version 2.95.3 20010315 (release)

  7. root@lcw:/home/mystery/Downloads/linux-2.6.14#  

5) 然后配置好环境变量,将前面Makefile中的绝对路径去掉,再试试
 
  1. root@lcw:/home/mystery/Downloads/linux-2.6.14# make zImage

  2.  CHK     include/linux/version.h

  3. make[1]: `include/asm-arm/mach-types.h' is up to date.

  4.  CC      arch/arm/kernel/asm-offsets.s

  5. arm-linux-gcc: installation problem, cannot exec `cpp0': No such file or directory

  6. make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1

  7. make: *** [prepare0] Error 2

错误提示:安装错误 ,以至于找不到文件,查看readme,原来这个版本必须放在固定的位置
 
  1. oot@lcw:/home/mystery/Downloads/linux-2.6.14# cd /usr/local/

  2. root@lcw:/usr/local# ls

  3. 2.95.3  bin  etc  games  include  lib  man  sbin  share  src

  4. root@lcw:/usr/local# mkdir arm

  5. root@lcw:/usr/local# mv 2.95.3/ arm/

  6. root@lcw:/usr/local# ls

  7. arm  bin  etc  games  include  lib  man  sbin  share  src

  8. root@lcw:/usr/local# ls arm/

  9. 2.95.3

6) 再次配置好环境变量
 
  1. root@lcw:/home/mystery/Downloads/linux-2.6.14# make zImage

  2.  CHK     include/linux/version.h

  3. make[1]: `include/asm-arm/mach-types.h' is up to date.

  4.  CC      arch/arm/kernel/asm-offsets.s

  5.  HOSTCC  scripts/conmakehash

  6.  CC      init/version.o

  7.  CC      init/do_mounts.o

  8. CPIO    usr/initramfs_data.cpio

  9.  AS      usr/initramfs_data.o

  10. usr/initramfs_data.S: Assembler messages:

  11. usr/initramfs_data.S:29: Error: Unknown pseudo-op:  `.incbin'

  12. make[1]: *** [usr/initramfs_data.o] Error 1

  13. make: *** [usr] Error 2

OK,能编译了,然后Error: Unknown pseudo-op:  `.incbin'
好吧,这个编译工具还不能识别它,再一次以“编译工具版本过低”失败
7) 再然后,我去优快云下了一个3.3.2版本的编译工具,OK,正在编译中

然后系统就开始编译了,等吧
如果按照默认的配置,没有改动的话,编译后系统会在arch/arm/boot目录下生成一个zImage文件,这个文件就是刚刚生成的内核文件。
7. 现在我们就可以把它下载到开发板中进行验证啦,至于怎么下载,我前面的文章已经介绍过了哈

8.工具啊,你把我害惨了,现在自己来配置一个工具链!



本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1172322

基于S3C2410处理器的Linux系统移植教程 本文还有配套的精品资源,点击获取 简介:本文介绍了将Linux操作系统移植到S3C2410 ARM920T处理器平台的详细步骤,包括U-Boot引导加载器的配置与编译、Linux内核定制、设备驱动编写、根文件系统构建、系统调试与测试以及性能优化。教程涵盖了硬件初始化、内核启动、驱动加载、文件系统配置到性能调优的整个嵌入式Linux构建过程。 1. S3C2410处... 阅读详情

相关推荐

FS2410启动文件 包括u-boot,linux内核和文件系统

自己移植的FS2410开发板启动文件 包括u-boot1.1.6,linux内核2.6.14.1和cramfs文件系统。构建自己的Linux开发环境 njnu 王奔

内核(2.6.14) + 根文件系统 +Qtopia Core 4移植 for S3C2410

/*********************************************************/ LarryChan   阿牛哥(亮)   chenliang_43@sina.com   http://blog.sina.com.cn/mimimomoll 2008.5.7. 桂林电子科技大学 正平科技馆机器人中心 衷心感谢所有对本文有所帮助的人。本文仅供交流,无意

厉枭鹏的点滴记录 1157

基于S3C2410的Linux移植

基于S3C2410的Linux移植,内核移植,驱动开发

嵌入式开发之linux内核移植

很早就买了OK6410开发板,由于linux内核学习难度大,加上时间工作和时间的原因,断断续续移植linux内核、文件系统和u-boot,linux学习已作为一种求知态度。

weixin_38880029的博客 2073

基于S3C2410处理器的Linux移植

如何移植Linux操作系统 ,在基于Arm微内核的三星S3C2410平台上移植

ARM嵌入式系统实验报告

ARM的实验观察结果,嵌入式系统。ARM9 S3C2410A嵌入式微处理器芯片的体系结构,

内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410

内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410 TARGET CPU:   S3C2410X SDRAM: HY57V561620(32MB) × 2 FLASH: K9F1208(64MB) NET:   CS8900 HOST Linux Realse Version: Fecora Core 6 CrossCompiler: gcc-4.1.1

chenyijun的专栏 1987

在trae CN中使用conda环境(已解决)

Trae CN 是字节跳动于 2025 年 3 月 3 日发布的国内首个 AI 原生集成开发环境(AI IDE)123。

zwzscnds的博客 6935

linux内核版本 2.6.14,Linux-2.6.14内核在S3C2410上的移植

1.准备工作下载解压交叉编译工具,2.6的内核编译要用3.4.1版本的(arm-linux-gcc-3.4.1).下载解压2.6.14.1内核.之前文章已经说明不再赘述.2.Flash分区管理启动开发板,进入vivi,查看vivi的分区信息.分区信息如下所示:分区起始地址分区大小分区作用Part00x00x00020000 (128k)bootloaderPart10x000200000x0001...

weixin_39876282的博客 227

CNN经典网络模型(二):AlexNet简介及代码实现(PyTorch超详细注释版)

CNN经典网络模型之一:AlexNet,本文包含其简介及代码,在PyTorch中实现,进行超详细注释,适合新生小白阅读学习~

qq_43307074的博客 2万+

视频倍速 - 在线调倍速的加速器APP工具

一刀工具箱APP提供一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!视频倍速-在线调倍速的加速器-一刀工具箱APP。...

无涯教程 7553

基于S3C2410平台的Linux 2.6.14内核+平台驱动的移植指南(最终版)

基于S3C2410平台移植Linux 2.6.14内核&驱动指南安装交叉编译工具Ø        下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 交叉编译工具URL: ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

echo 'narcissus' 4724

使用 ChatGPT/Copilot 提升前端开发效率的 N 种方式

typescript// 输入:根据这个 JavaScript 对象,生成完整的 TypeScript 类型定义id: '123',stock: 50,},// ChatGPT 生成:id: string;discount?: number;// 可选属性// 只读属性// 更进一步,生成 Zod schema 用于运行时验证:});}),});AI 代码助手真正的革命性不在于它能生成多少代码,而在于它改变了我们解决问题的方式。

fineday 1591

嵌入式linux系统移植的四大步骤_嵌入式linux内核裁剪与移植步骤教程

嵌入式linux内核裁剪与移植步骤教程1 嵌入式linux操作系统Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己...

weixin_36076139的博客 4705

在AVP28335(兼容德州仪器TMS320-28335) 上实现ModbusSlaveRTU-485源码及注释。

今天先把题目先给出来, 在近两天会把源码 (含详细注释 )及部署、测试结果给出来, 希望能给大家帮助。(全免费 我有点缺德,断了别人的一个财路)。

FOOLCODE的专栏 642

MTK MT6833平台屏幕与TP驱动移植实战:从FAE伪代码到内核模块集成

本文详细介绍了在MTK MT6833平台上进行屏幕与TP驱动移植的完整实战流程。文章从解析供应商提供的初始化伪代码入手,逐步拆解了在LK阶段点亮屏幕、在内核层集成Panel驱动以支持休眠唤醒,以及移植并调试sitronix_ts触摸驱动的核心步骤与关键技巧,为嵌入式开发人员提供了从零到一集成新硬件的清晰指南。

rnn9storyteller的博客 441

基于S3C2410平台移植Linux 2.6.14内核&驱动指南

安装交叉编译工具Ø        下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 交叉编译工具URL: ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2Ø        安装       //将压缩包移动至根目录下  

hecant的专栏 1746

uniapp - 使用 <video> 播放视频黑屏,浏览器控制台报错: DOMException: The element has on supported sources.(详细完美解决方案)

uniapp video 视频播放黑屏,uniapp 报错DOMException: The element has on supported sources.,uniapp如何解决DOMException: The element has on supported sources.,uniapp使用video标签无法播放视频出现黑屏问题处理,uniapp解决video视频黑屏显示0秒,并且浏览器报错DOMException: The element has on supported sources.,un

✅ 精选推荐文章 7055

S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

uboot启动内核分析 进入cmd_bootm.c,找到对应的bootm命令对应的do_bootm(): int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { boot_os_fn *boot_fn; //boot_fn是个数组函数 ... .. boot_fn(0, argc...

嵌入式与Linux那些事的博客 2834

【Unity实战篇 】| Unity实现 文本框可以自适应大小,到达最大宽度之后再缩小字体

Unity实现 Text文本框可以自适应大小,到达最大宽度之后再缩小字体 需求:在文本框可以自适应大小拉伸的前提下,增加一个最大限制宽度,使其到达最大宽度后 再启用 Best Fit 实现自适应改变文字大小以适应文本框的大小。 在Unity中经常会用到文本组件的自适应大小功能,一般使用HorizontalLayoutGroup和ContentSizeFitter组件配合即可实现文本自适应的效果。

努力前行,总会成为自己心中的那道光 3万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

S3C2410 & Linux 2.6 内核

Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32位微控制器,带独立的16KB的指令Cache和16KB数据Cache、LCD控制器、RAM控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位ADC、Touch Screen接口、I2C接口、I2S接口、2个USB接口控制器、2路SPI,主频最高可达

rbpr的专栏 1248

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

移植Linux2.6.22.2到博创2410-S(s3c2410A)(一朋友的文章,很不错)

移植Linux2.6.22.2到博创2410-S(s3c2410A)(包括AX88796移植)   前几天成功制作了Gcc4.1.0+glibc-2.3.2 的ARM-Linux交叉编译器,移植了U-Boot1.2.0(AX88796网卡还没搞定,有空再移植)。现在轮到Linux内核了。因为当时制作交叉编译器的时候,使用的是Linux2.6.22.2内核,所以现试着将2.6.22.2移植到

8347

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

S3C2440移植linux3.4.2内核之内核裁剪

内核裁剪 为什么要裁剪内核? 因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值) 5.1首先裁剪内核里无关的CPU/单板文件 1)通过vi .config,然后搜索2440,如下图所示: 2)然后参考上图,make menuconfig 进入System Type —> SAMSUNG S3C24XX SoCs Support:...

嵌入式与Linux那些事的博客 2975

S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

启动内核 有8个分区,而我们的uboot只有4个分区。 0x00000000-0x00040000 : "bootloader" //存放uboot 0x00040000-0x00060000 : "params" //存放环境变量 0x00060000-0x00260000 : "kernel" //存放内核 0...

嵌入式与Linux那些事的博客 3066

linux2.6.18内核S3C2410平台移植笔记

  我使用的实验箱是Embest EDUKIT-III,板上资源CPU:SAMSUNG S3C2410A、FLASH:K9F5608U0(Samsung NAND 32MiB),烧录工具:embest flash programmer。因为厂家自带的是2.4的内核,目前学习开发用的基本上都是2.6内核,这两者改动还是比较大的。电话咨询过技术支持后,对方说只想在板子上跑系统的话还是比较好移植的。于是...

weixin_33995481的博客 349
上一篇: 【IT基础】网线的直连线与交叉线之间的区别
下一篇: 【嵌入式】使用Cross Toolchain构建交叉工具链
成鹏致远
博客等级 码龄14年 50粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值