
Linux移植篇
文章平均质量分 75
整个嵌入式开发的整个流程,包括开发环境的搭建,bootloader、linux内核、多种文件系统的移植,设备驱动移植入门,3G拨号上网,wifi、路由器的制作等。
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
fulinux
我热爱Linux、热爱Yocto、喜欢编程、热爱科学技术的码农!希望我的博客能帮助到哪些在茫茫黑夜中摸索的小白!
欢迎关注、点赞和订阅!
展开
-
多种嵌入式文件系统移植集合
1. 嵌入式存储系统1.1. 计算机组成原理从冯.诺依曼的存储程序工作原理及计算机的组成来说,计算机由运算器、控制器、存储器和输入/输出设备五大部件组成。其中运算器和控制器统称为中央处理器(CPU),而存储系统分成内部存储器(内存)和外部存储器(外存)。输入/输出设备并非计算机所必需的,如果一个设备具有CPU,内存和外存,我们就可以说它是一台计算机。在很多嵌入式设备上,都没有输入/输出设备原创 2013-06-01 21:23:34 · 15542 阅读 · 2 评论 -
ARM+llinux系统移植3G拨号上网收发短信(一)
以下向大家演示如何在2440开发板的linux系统中实现3G拨号上网的功能。1向linux内核中添加3G模块的驱动(USB转串口的驱动)和ppp协议的支持,重新编译下载内核。2对ppp-2.4.4源代码进行交叉编译。将拨号上网所需的两个应用程序pppd和chat拷贝到开发板/usr/sbin文件夹下,将改好的脚本文件wcdma、wcdma-chat-connect、wcdma-chat-disconnect存放在/etc/ppp/peers目录下。将含有域名解析服务器地址的文件resolv原创 2013-07-14 17:04:23 · 14686 阅读 · 0 评论 -
ARM+llinux系统移植3G拨号上网收发短信(二)
一、发送text格式的短信二、发送PDU格式的短信原创 2013-07-14 12:57:39 · 3309 阅读 · 0 评论 -
ARM+linux系统移植3G拨号上网收发短信(三)
一、用text查看模式下面的“发”是指我敲的命令,“收”是指回车后显示的信息包括其他接收的信息。~ >: microcom -s 115200 /dev/ttyUSB1发:at收:OK设置成文本模式读:发:at+cmgf=1收:OK将信息保存在SIM卡中:发:at+cpms="SM","SM","SM"收:+CPMS: 0,5原创 2013-07-14 23:09:55 · 3435 阅读 · 0 评论 -
libmodbus遇到的问题
我在github网站git clone下载的libmodbus,编译的过程中遇到了很多问题,问题也是接踵而至,陷入无限的循环中。请教郭工,于是我就到http://libmodbus.org/download/下载最新版本的,果然编译的很顺畅,一点问题也没有。在参考github网站的libmodbus的内容就可以了。原创 2014-07-09 11:27:21 · 6963 阅读 · 1 评论 -
thermal系列(7)-Thermal配置和调试
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录thermal系列目录默认降频和关核的温度降频温度定义关核温度定义逆向配置调试配置45℃降频配置45℃热插拔CPU核查看CPU和GPU信息查看CPU频率信息查看CPU核数信息查看GPU频率信息thermal系列目录thermal系列(1)-引言部分thermal系列(2)-thermal cor.原创 2022-05-03 12:26:12 · 1242 阅读 · 0 评论 -
高通开发系列 - Bootloader之lk匹配dtb和dtbo中msm-id和board-id的知识
lk匹配dtb和dtbo中的msm-id和board-id等知识原创 2021-12-28 14:45:16 · 3472 阅读 · 6 评论 -
thermal系列(6)-thermal-engine守护进程
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录thermal系列目录thermal-engine守护进程thermal-engine配置举例软件热缓解设备热缓解的算法简介DTM算法简介Monitor算法简介默认的Thermal配置开启thermal-engine调试关闭某个默认的规则关闭thermal-engine的方法Modem和PA的热管理实.原创 2021-08-17 11:26:32 · 1185 阅读 · 2 评论 -
Linux Audio驱动系列(技巧篇) - tingmix调试抓Log
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎订阅!你的喜欢就是我写作的动力!目录先设置内核打印那些audio驱动文件终端pr_debug信息,比如:echo 'file msm8952.c +p' > /sys/kernel/debug/dynamic_debug/controlecho 'file msm8952-dai-links.c +p' > /sys/ker.原创 2021-07-02 16:52:45 · 836 阅读 · 0 评论 -
Linux Audio驱动系列(入门篇) - 如何理解tinymix设置的路由
问题概述最近在了解高通音频相关知识,其中有怎么一条命令:tinymix 'PRI_MI2S_RX Audio Mixer MultiMedia1' '1'如何理解这条命令呢?分析机理dapm的route结合自己看大神们关于dapm和widget相关知识的了解,总结如下一点小经验。如果不对的地方请帮忙斧正:在kernel/sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c文件中,先找到PRI_MI2S_RX Audio Mixer语句的dapm的route定义原创 2021-07-01 20:28:30 · 1627 阅读 · 0 评论 -
高通开发系列 - Audio之音频的Bringup指导
高通开发系列 - Audio之音频的Bringup指导原创 2021-04-14 17:41:59 · 3829 阅读 · 0 评论 -
Qualcomm 高通平台回声消除和噪音抑制的调试
参考:cl93-v1638-2_c_application_note__enhanced_echo_canceller_and_noise_suppression_tuning2. Acoustic Echo Cancellation声学回声消除The presence of an acoustic echo in a mobile phone and the delay inherent in a cellular communications system necessitates an EC t原创 2021-04-14 17:37:58 · 2212 阅读 · 0 评论 -
庞杂技术要点汇总文档分享(1)
庞杂技术要点汇总文档分享,包含linux,yocto,android,thermal,高通平台,selinux,AT,编程等等多种知识内容,全文共117页,有MHTML和PDF两种文档,精心排版原创 2021-03-05 23:23:46 · 1513 阅读 · 9 评论 -
Linux driver读书笔记(7) - linux内核设备模型(翻译)
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录Linux内核设备模型概述下游的访问对上的用户接口Linux内核设备模型参考:Documentation/driver-api/driver-model/overview.rst概述Linux kernel driver程序模型是以前在内核中使用的所有不同驱动程序模型的统一。它旨在通过将一组数.原创 2021-02-27 15:08:07 · 393 阅读 · 4 评论 -
Linux driver读书笔记(5) - 基本的设备结构体
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录基本的设备结构体struct device编程接口struct device_attribute设备属性DEVICE_ATTR宏device_attribute实例过程展示基本的设备结构体struct device结构体定义位于:linux-4.9/include/linux/device.h.原创 2021-01-03 17:35:05 · 395 阅读 · 0 评论 -
Linux driver读书笔记(4) - 设备驱动程序设计模式
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录驱动程序设计模式State Container 状态容器container_of()函数驱动程序设计模式本文档描述了设备驱动程序中的一些常见设计模式。子系统维护人员可能会要求驱动程序开发人员遵循这些设计模式。State Container 状态容器container_of()函数Stat.原创 2021-01-02 15:11:45 · 428 阅读 · 3 评论 -
Linux driver读书笔记(3) -设备类型
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录Device Classes总结为了自己学习!Device Classes设备类描述一种设备类型,如音频或网络设备。每个设备类定义了一组语义和该类设备所遵循的编程接口。设备驱动程序是特定总线上特定设备的编程接口的实现。总结设备类是一个学校,有小学、有初中…每个类有专门的函数组合,搞IT.原创 2021-01-02 14:06:07 · 518 阅读 · 2 评论 -
Linux driver读书笔记(2) - Bus Types总线类型(mybus/mydevice/mydriver实例)
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录Bus Types定义声明Registration注册Callbacks回调函数Device和Driver Lists列表sysfs文件系统Exporting Attributes导出属性mybus/mydevice/mydriver分离实例Bus Types定义int bus_register.原创 2020-12-28 18:55:09 · 517 阅读 · 2 评论 -
Linux driver读书笔记(1) - 驱动模型(Driver Model)
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录Driver Binding驱动绑定Bus总线device_register()函数Device Class设备类Driver驱动sysfs文件系统driver_register()函数设备或驱动卸载时Driver Binding驱动绑定驱动绑定是将设备与可以控制它的设备驱动程序关联的过程。总线驱.原创 2020-12-28 18:53:41 · 870 阅读 · 2 评论 -
thermal系列(5)-DTSI中配置Thermal
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录thermal系列目录DTSI中配置ThermalDTSI节点类型描述CPU0的配置举例CPU核hot-plugging举例修改热缓解阈值DTSI的node中带有tracks-lowDTSI中关闭某个Thermal Zonesthermal系列目录thermal系列(1)-引言部分thermal.原创 2020-12-14 19:31:00 · 964 阅读 · 0 评论 -
Linux 音频硬件设备-msm89xx和pm8953 Audio Hardware
By: fulinuxE-mail: fulinux@sina.comBlog: https://blog.youkuaiyun.com/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录Audio Codec System Overview应用处理器内部的Codec部分Codec digitalLPAI2S和MI2SSPMIPM8953内部的Codec部分Codec analogPDMMUX是什么MBHC是什么HS insert/remove detectMicrophone bia.原创 2020-12-08 18:32:55 · 971 阅读 · 0 评论 -
u-boot-2014.10移植第31天----内核启动(一)
原本以为u-boot移植好了,引导linux内核启动不是问题吧。但是却折磨了我两天,一直在“Starting kernel...”这里卡住了。综合网上的说法出现这个问题有如下原因:1)u-boot和linux内核主频不匹配;2)u-boot和linux内核机器码不匹配;3)bootarges参数数不对;3)内核中没有添加串口相关的驱动;实际情况是这些在我这里都是正确的。因为我用u-boot-201原创 2015-01-20 17:46:33 · 2820 阅读 · 0 评论 -
u-boot-2014.10移植第30天----nand flash的SPL启动(二)
在保存环境变量时,再次启动时错误,原来是环境参数保存的位置翻盖了u-boot,修改如下:#if NONE_FLAG#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 0x070000)#define CONFIG_ENV_IS_IN_FLASH#define CONFIG_ENV_SIZE 0x10000#els原创 2015-03-30 17:31:39 · 2126 阅读 · 0 评论 -
u-boot-2014.10移植第29天----nand flash的SPL启动(一)
前面在移植nand flash启动时做了很多探索性的工作,但是后来发现在relocate.S文件中调用的函数中有调用大部分的库函数,牵扯到的文件较多,很难将它们一一包含到前面4K空间中去。正在想其他方法时,突然意识到SPL功能。我初步了解了一下SPL的功能,简而言之是一个将u-boot从nand flash拷贝到SDRAM中并运行的一个程序(u-boot-spl.bin),是u-boot在nand原创 2015-03-29 16:27:24 · 7612 阅读 · 0 评论 -
u-boot-2014.10移植第28天----nand flash启动(六)
我本来是想修改arch/arm/lib/relocate.S文件的,将nand flash中的镜像拷贝到SDRAM中运行,但是发现,前面4K空间中有board_init_f的C语言函数,函数里又有很多的库函数,这样一来牵扯的文件就很多了,很可能无法将他们全部包含在前4K空间内。我在arch/arm/lib/relocate.S文件中做的修改如下:ENTRY(relocate_code)原创 2015-03-26 13:35:17 · 2279 阅读 · 0 评论 -
u-boot-2014.10移植第27天----nand flash启动(五)
为实现nand flash启动,最好的方法是使用u-boot自身提供的SPL方式,就是借助另一个相对独立的u-boot-spl.bin执行文件,将u-boot.bin拷贝到SDRAM中去,再运行u-boot.bin。这样一来u-boot就可以再次重定向。我们这里首先尝试用一个老方法。1、首先关闭“位置无关”的编译选项,在arch/arm/config.mk文件中,注释“pie”:# needed原创 2015-03-25 08:25:00 · 2263 阅读 · 0 评论 -
u-boot-2014.10移植第26天----nand flash启动(四)
u-boot-2014不管你是从Nor flash还是SDRAM启动,它都会根据SDRAM的空间计算u-boot被重定向的位置,由于Nor flash可以像SDRAM那样操作。代码可以直接在Nor flash中运行,所以对于它而言重定向容易实现。但是Nand flash不能直接像SDRAM那样操作,那么,要实现从nand flash启动就需要首先将u-boot拷贝到SDRAM中的某个位置中去,再从原创 2015-03-02 16:21:39 · 1867 阅读 · 0 评论 -
u-boot-2014.10移植第25天----nand flash启动(三)
在实现u-boot从nand flash启动之前,我们将前面asm_led程序放在nand flash第一个块的前4Kbit之中,因为asm_led没有系统初始化功能,所以还需要将bootstrap程序,放在nand flash的0地址处。bootstrap初始化完2440后,跳转到asm_led程序去执行。这对于掌握从nand flash启动有着很重要的意义。创建一个目录:$ mkdir nan原创 2015-02-27 08:30:45 · 2718 阅读 · 0 评论 -
u-boot-2014.10移植第24天----nand flash启动(二)
nand flash启动 比较新的u-boot版本包括u-boot-2014版本的都是用重定向的机制,而且用到了代码位置无关的技术,在u-boot连接时使用了-pie选项:-pie :Produce a position independent executable on targets which support it. For predictable results,you must also原创 2015-02-11 08:33:25 · 2036 阅读 · 0 评论 -
u-boot-2014.10移植第23天----nand flash启动(一)
在Nand flash中保存环境变量u-boot中的环境变量可以通过pri命令可以查看,可以通过set(setenv)命令设置一个参数,设置之后的参数仅仅是保存在SDRAM中,掉电后丢失,使用save命令可以保存参数到Nor flash或Nand flash中去,但是u-boot默认是保存到Nor flash中去,下面修改u-boot,使其保存的环境变量保存到Nand flash中去。在inclu原创 2015-02-10 08:13:51 · 3139 阅读 · 0 评论 -
u-boot-2014.10移植第22天----添加nand flash命令支持(四)
解决问题:nand0: MTD Erase failure: -5 drivers/mtd/nand/nand_bbt.c文件中初始化bbt/* * Allocate memory (2bit per block) and clear the memory bad block * table. */ this->bbt = kzalloc(len, GFP_原创 2015-02-09 10:07:18 · 3226 阅读 · 0 评论 -
u-boot-2014.10移植第21天----添加nand flash命令支持(三)
虽说nand flash读写操作是可以了,但是我使用nand markbad命令将一个块标记为原创 2015-02-08 08:34:12 · 3891 阅读 · 0 评论 -
u-boot-2014.10移植第20天----添加nand flash命令支持(二)
继前一天移植的情况,运行后发现:Flash: 2 MiBNAND: 0 MiB说明Nand flash没有移植成功,在文件drivers/mtd/nand/s3c2440_nand.c 中发现board_nand_init函数中:nand->select_chip = NULL选择芯片函数为NULL,我们在board_nand_init函数上面加上s3c2440_nand_select函数,代码原创 2014-12-31 20:04:26 · 2822 阅读 · 0 评论 -
u-boot-2014.10移植第19天----添加nand flash命令支持(一)
今天继续移植nand flash,对于很多情况而言,u-boot从nand flash启动是一个至关重要的功能,毕竟NOR flash成本太高,不是所有开发板都会添加NOR flash。u-boot中的SMDK2410模板是没有支持从nand flash启动的功能的,但是却有支持操作nand_flash的操作命令,2410和2440在nand flash支持上的区别有:1、2410仅支持小块nan原创 2014-12-31 20:03:38 · 3311 阅读 · 0 评论 -
u-boot-2014.10移植第18天----添加DM9000网卡支持(二)
修改代码一不小心把这篇本已写好的博客删除了,回收站竟然没有保存草稿的东西。现在自能从新写了!DM9000自身也有基地址,这个基地址是由TXD[3:0](strap pins)引脚来约束的,满足公式:IO base = (strap pin value of TXD[2:0]) * 10H + 300HTXD[2:0]引脚有8中状态,故IO基地址有8种基地址,它们是300H,310H,320H,34原创 2014-12-31 20:03:10 · 2767 阅读 · 0 评论 -
u-boot-2014.10移植第17天----添加DM9000网卡支持(一)
很多读者的2440的板子应该都有DM9000网卡。在移植之前看看这几篇文档:DM9000中文手册(详细)这篇文章告诉我们DM9000的一些硬件知识。DM9000和MINI2440深入理解这篇文章告诉我们2440是如何实现对DM9000的访问。2440 dm9000 到底咋确定地址 这篇文章告诉我们如何确定地址端口的地址和数据端口的地址。DM9000 datasheetdatasheet上说dm90原创 2014-12-31 20:02:58 · 2082 阅读 · 0 评论 -
u-boot-2014.10移植第16天----Nor flash启动
第15天时将u-boot.bin文件烧录到Norflash上没有正常启动,考虑到tq2440.h文件中的CONFIG_SYS_TEXT_BASE 值时0x33FC0000,我们将其修改为0,毕竟这个是绝对地址。#define CONFIG_SYS_TEXT_BASE 0修改、编译、烧录后运行:结果还是不能运行,这是什么原因呢?将bootstrap.bin文件重新烧录到Norflash中,将u-bo原创 2015-02-06 08:14:10 · 2981 阅读 · 0 评论 -
u-boot-2014.10移植第15天----nor flash操作
去除nor flash写保护在已经运行起来的u-boot命令行去除nor flash写保护:TQ2440 # flinfoBank # 1: EON EN29LV160AB flash (16 x 16) Size: 2 MB in 35 Sectors AMD Legacy command set, Manufacturer ID: 0x1C, Device ID: 0x2249原创 2015-02-05 08:38:41 · 3929 阅读 · 0 评论 -
u-boot-2014.10移植第14天----在SDRAM中运行
昨天遇到编译错误,我们从错误提示中寻找解决方法:信息1:CHK include/config.h/* Automatically generated - do not edit */#define CONFIG_BOARDDIR board/samsung/tq2440#include #include #include #include #include 注释中说这个文件是自原创 2015-02-04 08:41:14 · 4060 阅读 · 0 评论 -
u-boot-2014.10移植第13天----创建开发板
board_init_r 函数在文件arch/arm/lib/board.c中,都是C挺复杂的,以后看情况,如果用到了就深入研究,这里就跳过了。“通过上面的叙述,大家应该比较了解U-boot的大致情况,下面开始移植工作了。 我们要做的工作是移植,就是根据不同的地方做修改。U-Boot一直都没有支持S3C2440,移植仍是用 U-Boot支持的友善之臂 SBC2410的文件作蓝本来移植。所以移植所要原创 2015-02-03 08:32:17 · 2976 阅读 · 0 评论