嵌入式linux

BeagleBone 教学视屏 -- 第一季

≯℡__Kan透↙ 提交于 2020-04-10 22:35:50
嗯,买了板子不用的话就太不像话了,想想还在用山寨学习板的童鞋,所以我下定决心做这么一期针对beaglebone的中文教学视屏。现在计划第一季中由我主讲,主要内容无非是基于beaglebone的嵌入式linux开发,从搭建环境到驱动开发再到应用开发;如果有时间再讲讲Android相关内容,也是搭建环境到驱动到应用。 下面是视屏的下载地址,大家有什么意见尽管提。当然了,本人水平有限,做的不好您不看就是了,骂人就没有必要了。 本教学视屏遵循 GNU GENERAL PUBLIC LICENSE ,请不要用于任何商业用途。 <Beaglebone teaching video> Copyright (C) <2013> <Cedric Sun:srjklssj@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is

嵌入式Linux驱动学习之路(二十五)虚拟网卡驱动程序

跟風遠走 提交于 2020-04-06 00:26:46
一、协议栈层次对比 设备无关层到驱动层的体系结构 1)、网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。这一层的存在使得上层协议独立于具体的设备。 2)、网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。 3)、设备驱动功能层各函数是网络设备接口层net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,他通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接受操作。 4)、网络设备与媒介层是完成数据包发送和接受的物理实体,包括网络适配器和具体的传输媒介,网络适配器被驱动功能层中的函数物理上驱动。对于Linux系统而言,网络设备和媒介都可以是虚拟的。 网络协议接口层: 主要进行数据包的收发。 驱动程序代码: /************************************************************************* > File Name: s3c_virnet.c > Author: > Mail: >

01. 嵌入式Linux shell基础指令

扶醉桌前 提交于 2020-03-30 22:56:51
(1) ls (list,列表)   作用:使用列表把当前文件夹下所有文件显示出来 ls -a 显示所有文件,包括隐藏文件(以“.”开头的文件) ls -l 详细信息显示文件 ls -a -l ls -l -a ls -la (2) cd (change directory,更改目录)   作用:用来切换目录,涉及到相对路径和绝对路径   cd .. .. 代表上一层目录    . 代表当前目录 (3) pwd (print work directory,打印工作目录)   作用:打印出当前的绝对路径 (4) mkdir (make directory,创建文件夹)   作用:创建空文件夹,mkdir -p pathname 级联创建文件夹,例如file/file1/file2 (5) mv (move,移动)   作用:在目录间移动文件,重命名文件 mv 源文件pathname 目的文件pathname (6) rmdir (remove directory,删除文件夹)   作用:删除空文件夹   rmdir和rm -r的区别:rmdir只能删除空文件夹,而rm -r可以删除空文件夹和非空文件夹 (7) touch   作用:创建空文件 touch pathname (8) cp (copy,复制)   作用:复制文件或文件夹 cp 源文件pathname

嵌入式3.10拓展及作业

旧巷老猫 提交于 2020-03-17 09:21:50
GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等,并已被移植到其他多种硬件平台 [1] 。 GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection) [1] 。 结构编辑 GCC的外部接口长得像一个标准的Unix编译器。使用者在命令列下键入gcc之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连接器以制造可执行的程序。 每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端

自学嵌入式命令

陌路散爱 提交于 2020-03-11 03:23:06
1、clear -->清屏 2、pwd(print current working directory) -->打印当前目录 3、echo --> 回显 例:echo hello 例:echo $PATH(回显路径) 4、date --> 显示或者设置日期 5、ls(list) --> 显示目录下的文件列表 6、cd(change directory) --> 切换目录 7、alias --> 给某个命令起别名 例:alias ll=‘ls -l’(=两边不能有空格) 给ls –l重命名为ll /************************************ ls指令********************************/ 1)ls [option…] [arg…] 2)ls -a[ll] --> 显示所有文件,包括隐藏文件 3)ls -l[ong] --> 以长格式显示文件信息 4)ls -al 5)ls -h[uman readable] --> 以k,m,g显示文件的大小 6)ls -F --> 显示文件类型 7)ls -R --> 递归显示 8)ls / --> 显示/目录的内容 9)ls –a / --> 显示/目录的所有内容 10)ls -l --> 以长格式显示文件信息 例:-rwxrwxr-x 1 shangziyun shangziyun

嵌入式3.3拓展及作业

偶尔善良 提交于 2020-03-08 16:06:09
基本思想 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。 完全免费 Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。 完全兼容POSIX1.0标准 这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。 多用户、多任务 Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。 良好的界面 Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作

第五章 嵌入式Linux应用开发基础(1)

早过忘川 提交于 2020-03-08 13:02:41
5.1 快速入门总体介绍 参考视频P38,截取了2张图。 图5.1快速入门学习内容​​​​​ 图5.2快速入门路线 到这里初学者路线在线wiki结束了,后面的视频每一节都对应一个讲课文档,先看下讲课文档,然后在参考在线wiki,完全开发手册, https://book.100ask.org/index.html 。 5.2 HelloWorld 背后没那么简单 P39时长18:31,但是讲了好多内容,需要前期准备,按照视频操作,每1s都包含信息量,之前看一下视频一般都要1.25的倍速,现在看韦老师视频得慢速看,要不然跟不上节奏。 先把准备工作做了,Ubuntu和开发板互ping、配置NFS服务、配置交叉编译工具。 5.3 Win10、Ubuntu和开发板互ping 使用串口连接开发板和PC,打开MobaXterm,启动开发板,具体可以参见3.2章节。 先看下Ubuntu的ip,ifconfig 图5.1 Ubuntu IP 使用网线一端连接路由器,一端连接开发板网口,板子上有2个网口,应该都可以的,查看下开发板的ip,如图5.2。 图5.2 板子IP 验证下开发板和Ubuntu是否连通,ping 192.168.1.5,看到图5.3中板子和Ubuntu在传输数据,说明已经互通,Ctrl+C退出。 图5.3 板子和Ubuntu互通 理顺了一下三者之间的网络连接情况,图5.4

3.3嵌入式课程总结

血红的双手。 提交于 2020-03-08 10:03:10
嵌入式Linux操作系统 Linux介绍 1.安装Linux开发环境 Vm虚拟机(通过软件的方法模拟PC);Linux发行版(发行给用户使用的版本),redhat(centos 7),ubuntu(18.04),deppin。 2.Linux介绍(POSIX、GPL、GNU) 1991 Linux0.1 GPL:开源社区 GPL协议——Linux5.0 unix:1978-1979 C语言之父:丹尼斯里奇==unix之父(商业软件) POSIX标准:可移植操作系统接口(跨平台 的条件) GNU计划:GNU is not unix(优秀工具gcc gdb) Linux的使用 1.用户管理的命令 su:切换root;sudo:获取更高级的权限。 adduser:添加新用户;deluser:删除用户。 passwd:修改密码。 2.文件操作的命令 Linux一点哲学:一切皆为文件。 Linux文件分类:普通文件(-开头),目录文件(d),设备文件(c:字符设备/b:块设备),链接文件(l)。 Linux特殊文件:管道文件(p),堆栈文件(f),共享文件(s)。 Linux文件的操作权限:r:可读,w:可写,x:可执行。 权限描述(3组):(当前用户、当前用户组、其他用户)。 chmod:修改文件权限。 touch:创建文件;cat:查看文件;rm:删除文件。 3.文件编辑 gedit

嵌入式linux学习之sqlite3的使用

两盒软妹~` 提交于 2020-03-07 04:53:53
一、编译sqlite3 下载sqlite3的源代码进行编译,这个比较简单,我使用的芯片只能使用静态库,所以使用编译出来的静态库,以及头文件。 二、应用 sqlite3网上有许多总结,我推荐我之前学习参考的链接,写得比较全: sqlite3使用总结 以下是我使用的笔记: sqlite3 * db = NULL ; sqlite3_open ( xxx , & db ) ; xxx: 数据库文件名,绝对路径,若不存在的话会创建文件。 db:sqlite3的关键结构指针,类似于句柄。 char * zErrMsg = 0 ; sqlite3_errmsg ( db ) zErrMsg:创建一个指向错误信息的指针。 sqlite3_errmsg:返回错误信息的函数。 char * sql ; int rc ; sql = "SELECT * from xxx" ; rc = sqlite3_exec ( db , sql , sqlite3_callback , "" , & zErrMsg ) ; if ( rc != SQLITE_OK ) { fprintf ( stderr , "SQL error: %s\n" , zErrMsg ) ; sqlite3_free ( zErrMsg ) ; sql:操作数据库的语句,查询数据库中的对应表。 sqlite3_callback

嵌入式Linux驱动学习之路(二十)USB设备驱动

早过忘川 提交于 2020-03-07 03:45:35
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID。 在主机端,D+和D-都是下拉接地的。而设备端的D-接上拉时,表明此设备为高速设备:12M/s。 D+接上拉时则是全速设备:480M/S。 PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平。 而设备中的D+D-则是1.5K的上拉电阻。一旦接入PC中,电脑就会知道有设备接入。 USB是主从结构。所有的传输都是由主机发起的,即USB设备没有主动通知USB主机的能力。 USB的传输类型:      控制传输 。 可靠,时间有保证。 例如:USB设备的识别。      批量传输 。 可靠,但时间没有保证。 例如:U盘。      中断传输 。 可靠,实时传输。 例如:USB鼠标。      实时传输 。 不可靠。实时传输。 例如:USB摄像头。 USB传输的对象为端点。比如读U盘和写U盘,可以形容为从端点1读数据,从端点2写数据。     除了端点0以外,每个端点只支持一个方向的数据传输。     端点0用于控制传输,既能输出也能输入。 每一个端点都有传输类型和方向。 程序和术语中说的输入输出 都是基于USB主机的立场说的。   比如鼠标是数据从鼠标传输到PC机的,鼠标对应的端点称为输入端点。 USB总线驱动程序的作用: 1.识别设备 2. 查找并安装对应的设备驱动程序 3