自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(777)
  • 收藏
  • 关注

原创 【北京迅为】iTOP-4412精英版使用手册-第七十二章 5.3.18内核移植

PWM_POLARITY_INVERTED,可选字段,是否提供由pwm driver决定,表示pwm信号的极性,若为0,则正常极性,若为PWM_POLARITY_INVERTED,则反转极性。使用命令 “vim arch/arm/boot/dts/topeet_LVDS_7_0.dtsi”新建名为topeet_LVDS_7_0.dtsi的设备树,方便exynos4412-itop-elite.dts 应用,也方便屏幕的更换与修改。反之,发射结反偏时,三极管处于截止状态,LED不亮。

2025-12-23 16:01:17 663

原创 【北京迅为】iTOP-4412精英版使用手册-第七十章一 Linux内核移植

由于开发板上的接口非常多,接下来大家如果有兴趣,可以对各个不同的外设移植驱动了,大家可以尝试从移植和研究当中学习Linux 的开发技巧。第一处:注释我们进到内核 arch/arm/boot/dts/下,里面默认有 itop 的设备树文件,如下图所示: 我们打开 exynos4412-itop-scp-core.dtsi 文件,修改设备树文件。所以我们要下载这个版本之后的。3)生成.config,我们直接使用官方的默认配置即可,直接输入命令 make exynos_defconfig,如下图所示。

2025-12-18 17:41:28 741

原创 【北京迅为】iTOP-4412精英版使用手册-第七十章iTop4412 u-boot-2020.10移植

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。配备三星S5M8767电源管理。配备Android、Linux+Qt、Ubuntu操作系统,开启学习、研发的全新方式。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。功耗控制以及强劲的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性。已成为三星官方推广的处理器

2025-12-18 16:56:49 861

原创 【北京迅为】iTOP-4412精英版使用手册-第六十九章 Linux内核裁剪与定制

本章节不会谈到具体的代码,但是这里需要提醒的是,初学者特别是以前只接触过单片机的用户,Linux 学习过程中不需要也不可能从代码开始学习,Linux 驱动的学习步骤是"基础知识"“搭建环境”“编译烧写”,然后就是本章节的“定制内核”。Linux 内核看起来非常庞大,但是对于初学者以及开发应用程序的用户,根本不需要一开始就埋头于内核中,但是对于配置内核中的一些常用选项,并且编译出来下载到开发板上测试,则是必须掌握的,这是学习和掌握 Linux 的必行之路。取消配置,则内核在启动的时候,将不会打印信息。

2025-10-25 14:15:22 679

原创 【北京迅为】iTOP-4412精英版使用手册-第六十八章 U-boot基础知识

E4412_N.bl1.SCP2G.bin是三星提供的BL1文件,如果想分析,可以输入arm-none-linux-gnueabi-objdump -D -b binary -m arm E4412_N.bl1.SCP2G.bin > b1.asm命令生成反汇编文件,查看bl1.asm,初始化化环境如中断初始化,设置堆栈等,并搬移bl2代码到RAM中。就是说把整个 BL1 主体部分的内容累加和放到这里,然后实际计算下整个累加和,做对比,如果不对,就说明 BL1 是假的或错误的,不予执行。

2025-10-24 14:30:38 726

原创 【北京迅为】iTOP-4412精英版使用手册-第六十七章 USB鼠标驱动详解

其中的参数 name,则是驱动名称“usbmouse”,既然有驱动名称,那一定有设备名称,请注意前面介绍过的 USB 描述符,USB 描述符的具体内容是在USB 设备中的,相当于设备注册是在实体的“USB 设备”中!可以这样类比,当我们要到大学报到的时候,我们要填写学籍档案,假设学籍档案中信息都在户口簿上,例如:姓名、籍贯以及身份证号等等,这些信息从户口簿传递到学籍档案中,信息其实是一样的,只是在户口簿和学籍档案中组织形式不一样,名称不一样,实际包含的信息是一样的。主机只能和 USB 设备的“端点”通信;

2025-10-24 10:56:36 1032

原创 【北京迅为】iTOP-4412精英版使用手册-第六十六章 USB驱动专题

USB 通信的整个通信流程,在初始化进入 probe 之后,都是以 urb 为核心,urb 的处理流程为:创建 urb、初始化 urb(中断 urb,块 urb,控制 urb,同步 urb)、提交 urb、完成 urb、销毁 urb。除去具体的 USB 外部设备,像 USB 主控制器、USB ROOT HUB, USB HUB 等等都是属于 USB 内部设备,USB 内部设备的驱动实现,是不需要驱动工程师做的,这些工作在原厂提供的代码中都是支持的,甚至是 linux 官方的驱动中都是支持这些功能的。

2025-10-24 10:25:10 791

原创 【北京迅为】iTOP-4412精英版使用手册-第六十五章 Linux-定时器

在 Linux 内核中,定时器叫做内核定时器,内核定时器用于控制某个函数,也就是定时器将要处理的函数在未来的某个特定的时间内执行。内核定时器注册的处理函数只执行一次, 即不是循环执行的。内核的全局变量 jiffies:(记录内核自启动来的节拍数,启动的时候初始化为 0,内核之启动以来,产生的中断数)时钟中断,每产生一个中断,jiffies 就加 1。add_timer→mod_timer→ mod_timer(内核函数有下划线,表示“局部函数”)→internal_add_timer。

2025-10-23 16:27:49 317

原创 【北京迅为】iTOP-4412精英版使用手册-第六十四章 Linux-SPI驱动实验

SPI 和 I2C 一样,也是一个很常用的通信接口,大多数用于芯片之间的通信,同 I2C 相比,SPI 接口拥有更快的速度,速度可达十几 MHz。spi_device 封装了一个spi_master 结构体,事实上 spi_master 的注册会在 spi_register_board_info 之后, spi_master 注册的过程中会调用 scan_boardinfo 扫描 board_list,找到挂接在它上面的 spi 设备,然后创建并注册 spi_device。稍后会念念他的好的。

2025-10-23 16:06:14 748

原创 【北京迅为】iTOP-4412精英版使用手册-第六十三章 Linux-I2C驱动实验

虽然 I2C 看似复杂,但是需要我们嵌入式工程师做的事情并不多,首先,Linux 里面提供的 i2c adapter 的硬件驱动,探测、初始化 i2c adapte 等等这些几乎不需要我们驱动开发人员在添加了,我们需要关注的是实现 i2c 设备驱动中的 i2c_driver 接口,用具体的 i2c device 设备的attach_adapter()、detach_adapter()方法赋值给 i2c_driver 的成员函数指针。采用互电容的方法,在配合的相互的电容式触摸面板,它支持真正的多点触摸功能。

2025-10-23 15:53:09 518

原创 【北京迅为】iTOP-4412精英版使用手册-第六十二章 查询的方式获取按键值

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。第五步,在 led 驱动基础上修改初始化,设置 key 对应的 IO 为输入模式,添加驱动中的 rea 函数。然输入命令./read_key &运行应用层程序,按下开发板的按键,会看见我们的按键的数值已经被读出来了。第六步,使用 read 函数读管脚的状态,驱动使用 copy_to_user 函数上传给用户层。第一步,写入口出口函数。

2025-10-23 15:45:22 250

原创 【北京迅为】iTOP-4412精英版使用手册-第六十一章 PWM操作

定时器 0 与定时器 1 共用一个 8位预分频器,定时器 2、定时器 3 与定时器 4 共用一另一个 8 位预分频器,每个定时器都有一个时钟分频器,时钟分频器有 5 种分频输出(1/2、1/4、 1/8 、1/16 和外部时钟 TCLK)。当定时器递减计数器达到0的时候,如果设置了 Auto-Reload 功能,相应的 TCNTBn 的值会自动重载到递减计数器中以继续下次操作。然而,如果定时器停止了,比如在定时器运行时清除 TCON 中定时器使能位,TCNTBn 的值不会被重载到递减计数器中。

2025-10-23 15:27:18 637

原创 【北京迅为】iTOP-4412精英版使用手册-第六十章 RS485硬件原理

RS485 采用 SN65HVD3082 这个芯片,RO 为数据输入端,DI 为数据输入端,RE 是接收使能端,低电平有效,OE 是发送使能端,高电平有效,RE 和 DE 由一个管脚来控制,所以RS485 的驱动为串口驱动加上一个管脚驱动。硬件连接完成之后,我们把视频目录下面的测试程序分别拷贝到开发板上,因为 485 的驱动可以等于串口驱动+GPIO 的字符驱动,所以在驱动中只需要操作 GPIO,也就是设备节点/dev/max485_ctl。模块 2 和另外一块开发板连接,连接方式和模块 1 相同。

2025-10-23 15:09:05 357

原创 【北京迅为】iTOP-4412精英版使用手册-第五十九章 并发的控制

假设任务单元 A 申请“共享单元”:则先读变量,如果 0,则对变量加 1,如果 1,则直接返回,然后对共享资源资源进行操作,操作完毕之后则对变量赋值,假设任务单元 B 要申请“共享单元”:则先读变量,如果 0,则对变量加 1,如果 1,则直接返回,后对共享资源资源进行操作,操作完毕之后则对变量赋值。一个操作是原子操作,意思就是说这个操作是以原子的方式被执行,要一口气执行完,执行过程不能够被 OS 的其他行为打断,是一个整体的过程,在其执行过程中,OS 的其它行为是插不进来的。

2025-10-23 15:03:01 473

原创 【北京迅为】iTOP-4412精英版使用手册-第五十八章 中断之独立按键

修改完成之后,在 Ubuntu 系统下使用命令“mkdir irq_test”,新建文件夹“irq_test”,然后将修改好的驱动文件“itop4412_irq.c”、Makefile 文件拷贝到文件夹“irq_test”中,如下图所示。”这句代码在调试的过程中非常有用,就是打印当前所在的函数以及对应的行,在后面测试的时候就可以看到其效果。和上面中断申请函数对应的就是中断释放函数 free_irq,卸载驱动的时候需要调用,如下图所示,也是在头文件“include/linux/interrupt.h”中。

2025-10-23 14:45:06 680

原创 【北京迅为】iTOP-4412精英版使用手册-第五十六章 proc文件系统

为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi 目录中存储的就是当前系统上所有 SCSI 设备的相关信息,/proc/N 中存储的则是系统当前正在运行的进程的相关信息,其中 N 为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。1.13、task — 目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;

2025-10-23 13:40:07 506

原创 【北京迅为】iTOP-4412精英版使用手册-第五十五章 字符类GPIOS

配备三星S5M8767电源管理。修改完成之后,在 Ubuntu 系统下使用命令“mkdir char_driver_leds”新建文件夹“char_driver_leds”,然后将修改好的驱动文件“char_driver_leds.c”、头文件“char_driver_leds.h”、Makefile 文件以及应用文件“invoke_char_gpios.c”拷贝到文件夹“char_driver_leds”中,如下图所示。编写一个简单的应用“invoke_char_gpios.c”,如下图所示。

2025-10-23 10:54:52 503

原创 【北京迅为】iTOP-4412精英版使用手册-第五十四章 字符驱动

修改完成之后,在 Ubuntu 系统下使用命令“mkdir char_driver”新建文件夹“char_driver”,然后将修改好的驱动文件“char_driver.c”、Makefile 文件拷贝到文件夹“char_driver”中,如下图所示。使用命令“./mnt/udisk/invoke_char_driver”运行应用,调用驱动模块生成的设备节 点,如下图所示,可以看到两个设备节点都可以正常打开,说明驱动底层的 open 函数可以正常使用。使用编译命令“make”编译驱动,如下图所示。

2025-10-22 17:41:00 414

原创 【北京迅为】iTOP-4412精英版使用手册-第五十三章 生成字符类设备节点

以 4412 的串口为例,它有四个串口,不可能为每一个串口都重复申请设备以及设备节点,因为它们有类似的地方,而且很多代码都是重复的地方,所以引入了一个抽象的类,将其打包为 ttySACX,在实际调用串口的时候,只需要修改 X 值,就可以调用不同的串口。Linux 中的 class 是设备类,它是一个抽象的概念,没有对应的实体。如上图所示,这里给设备号 249 申请了两个设备节点,如果设备号 249 有对应的驱动, 用命令创建的设备节点和用代码创建的设备节点有一样的效果,都可以给提供给应用程序调用和操作。

2025-10-22 16:48:35 794

原创 【北京迅为】iTOP-4412精英版使用手册-第五十二章 注册字符类设备

如上图所示,用到多次 memset 函数,第一次由于没有规定 my_devices[i].data 的大小,所以只是对默认大小的数据赋值为 0,在设备初始化的循环中,又重新对my_devices[i].data 申请了 REGDEV_SIZE 大小的数据,所以需要重新赋值为 0。注册字符类设备的初始化函数为 cdev_init,这个函数在头文件“include/linux/cdev.h” 中,使用命令“vim include/linux/cdev.h”打开这个头文件如下图所示。

2025-10-22 16:37:18 639

原创 【北京迅为】iTOP-4412精英版使用手册-第五十一章 动态申请字符类设备号

启动开发板,将 U 盘插入开发板,使用命令“mount /dev/sda1 /mnt/udisk/”加载 U 盘,然后使用命令“insmod /mnt/udisk/request_ascdev_num.ko”加载模块request_ascdev_num.ko,如下图所示。将“实验 17_静态申请字符类设备号”中的文件“request_cdev_num.c”改为“request_ascdev_num.c”,然后添加动态申请设备号的代码,如下图所示。如上图所示,可以看到主设备号 249 已经动态被申请到。

2025-10-22 16:31:14 283

原创 【北京迅为】iTOP-4412精英版使用手册-第五十章 静态申请字符类设备号

这里使用设备号 9,使用加载模块的命令“insmod /mnt/udisk/request_cdev_num.ko numdev_major=9 numdev_minor=0”加载驱动 request_cdev_num.ko,如下图所示,加载成功。在 Ubuntu 系统下新建 request_cdev_num 文件夹,将写好的 request_cdev_num.c、编译脚本拷贝到 request_cdev_num 文件夹下,如下图所示。如上图所示,先将主设备号和次设备号默认为 0,然后做一个简单的判断。

2025-10-22 16:28:12 586

原创 【北京迅为】iTOP-4412精英版使用手册-第四十九章 驱动模块传参数

这里再介绍一下参数 perm,参数 perm 表示此参数在 sysfs 文件系统中所对应的文件节点的属性,其权限在“include/linux/stat.h”中有定义,如下图所示。在 Ubuntu 系统下新建 module_param 文件夹,将写好的 module_param.c、编译脚本以及应用拷贝到 module_param 文件夹下,如下图所示。实际上在加载模块的时候也是可以向其中传参数的。如下图所示,然后调用函数 module_param 和 module_param_array 接收参数。

2025-10-22 16:01:30 631

原创 【北京迅为】iTOP-4412精英版使用手册-第四十八章 LEDS驱动二

考虑到用户在实际开发中可能需要更多的 GPIO,本实验给用户提供 32 个 GPIO,需要注意的是有一部分是复用的 GPIO,需要首先对内核进行配置和编译之后才能使用。使用命令“./mnt/udisk/invoke_gpios 0”或者“./mnt/udisk/invoke_gpios 1”运行小应用 invoke_gpios,如下图所示。如上图所示,使用命令“./mnt/udisk/invoke_gpios 0”之后灯会灭,然后其它的 GPIO 也会都成为低电平。如下图所示,提供了 32 个 GPIO。

2025-10-22 15:57:03 909

原创 【北京迅为】iTOP-4412精英版使用手册-第四十七章 LEDS驱动一

在 Ubuntu 系统下新建 leds 文件夹,将写好的 leds 和编译脚本拷贝到 leds 文件夹下, 使用 Makefile 命令编译驱动,使用“arm-none-linux-gnueabi-gcc -o invoke_leds invoke_leds.c -static”命令编译应用。当 KP_COL0 和 VDD50_EN 网络时低电平的时候,三极管 L9014 的 BE 会截止,CE 截止,相当于 5V 的 VSYS 电压加到 1K、Led 小灯和一个无限大的电阻上,电流为零,小灯就会灭。

2025-10-22 15:30:56 485

原创 【北京迅为】iTOP-4412精英版使用手册-第四十六章 物理地址虚拟地址以及GPIO初始化

虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB 的程序和一个内存只有 4MB 的机器,操作系统通过选择,可以决定各个时刻将哪 4M 的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个 16M 的程序运行在一个只具有 4M 内存机器上了,而这个 16M 的程序在运行前不必由程序员进行分割。在最初的 PC 上,内存都非常小,如果程序小于内存,也还是可以运行的。

2025-10-22 15:09:51 226

原创 【北京迅为】iTOP-4412精英版使用手册-第四十五章 原理图的使用

配备三星S5M8767电源管理。本节实验要介绍的就是硬件的知识,这部分内容并没有想象的那么难,只要学习了原理图的整个框架,学会如何使用这个文档,剩下的硬件知识就可以在实际应用中一步步积累,主要是掌握硬件原理图的框架和分析方法。其它格式的原理图需要经过其它专业的训练,无论是 AD 还是 Orcad,都需要额外的学习,这个也超出了驱动学习的范围,如果感兴趣可以找相关的教程学习一下。如上图所示,如果学习过 layout 软件的使用,可以直接通过 PCB 查找对应的元件在 PCB 板上位置,如果不知道也没关系。

2025-10-22 14:44:58 499

原创 【北京迅为】iTOP-4412精英版使用手册-第四十四章 编写简单应用调用驱动

将“invoke_hello”拷贝到 U 盘,启动开发板,加载前一期的“devicenode_linux_module”驱动,如下图所示,使用 invoke_hello 调用设备节点“/dev/hello_ctl123”。”,如下图所示,使用的头文件是目录“/arm- none-linux-gnueabi/libc/usr/include/sys/stat.h”中的<sys/stat.h>.这里使用,如下图所示,进入目录“/usr/local/arm/arm-2009q3”。

2025-10-22 10:43:54 497

原创 【北京迅为】iTOP-4412精英版使用手册-第四十三章 生成设备节点

在 Ubuntu 中的目录“/home/topeet”下新建“devicenode_linux_module”目录, 拷贝驱动文件“devicenode_linux_module.c”和编译文件“Makefile”到新建目录中,如下图所示。启动开发板,拷贝“devicenode_linux_module.ko”到 U 盘,将 U 盘插入开发板,加载驱动文件“devicenode_linux_module.ko”,如下图所示。设备号,赋值为 MISC_DYNAMIC_MINOR,这个宏定义可以查到为 10。

2025-10-22 10:39:46 767

原创 【北京迅为】iTOP-4412精英版使用手册-第四十二章 驱动注册

另外注册驱动的时候,会返回数值,将其打印出来判断是否注册成功。启动开发板,拷贝“probe_linux_module.ko”到 U 盘,将 U 盘插入开发板,加载驱动文件“probe_linux_module.ko”,如下图所示,可以看到打印出了“initialized”,表明进入了 probe 函数。进入“probe_linux_module”目录,使用命令“make”编译“probe_linux_module.c”,如下图所示,生成模块文件“probe_linux_module.ko”。

2025-10-21 17:31:22 800

原创 【北京迅为】iTOP-4412精英版使用手册-第四十一章 设备注册

配备三星S5M8767电源管理。接着到 menuconfig 中将其配置上,使用命令“make menuconfig”,进入“Device Drivers --->”→“Character devices --->”→“Enable HELLO config”,如下图所示,配置上宏定义“HELLO_CTL”。在前面关于 Kconfig 实验中,已经添加了“HELLO_CTL”宏,如下图所示,使用命令“vim drivers/char/Kconfig ”打开前面定义过“HELLO_CTL”的配置文件。

2025-10-21 17:03:17 838

原创 Hi3403开发板极速启航 | 手把手带你玩转核心例程,轻松上手!

迅为电子在9月份重磅推出了基于,采用先进的四核Cortex-A55架构,主频高达1.4GHz,以强劲算力、超凡能效比与卓越的图像处理能力,为千行百业的智能化升级注入核心动力。无论是智能视觉、工业互联,还是AIOT边缘计算,它都能轻松驾驭,助您畅快开发!接下来我们将带你快速了解Hi3403开发板,并演示如何在开发板上运行多个实用例程,助你轻松上手!

2025-10-21 16:46:18 368

原创 【北京迅为】iTOP-4412精英版使用手册-第四十章 总线_设备_驱动注册流程详解

大家知道现在有很多设备都是支持热拔插的。设备种类繁多,不同的设备对应不同的设备名和设备号,在 Ubuntu 虚拟机中使用命令“cat /proc/devices”,如下图所示,可以看到不同的设备都有了编号。在系统初始化的时候,会扫描连接了哪些设备,并为每一个设备建立一个 struct_device 的变量,然后将设备的变量插入到 devices 链表,如下图所示。设备号肯定是有限的,一共就只有 256 个主设备号,这里引入了从设备号的概念,理论上就有 256*256 个设备号,这种数量级目前是可以接受的。

2025-10-21 16:31:23 705

原创 【北京迅为】iTOP-4412精英版使用手册-第三十九章 Makefile编译

如下图所示,就是 LEDS_CTL 的条件编译,也就是需要在 Kconfig 中定义,在menuconfig 中配置之后,编译器运行的时候找到对应的宏变量 LEDS_CTL 之后才会编译。如下图所示,在给大家提供的源码中,解压之后默认状态就有将“itop4412_leds.c”编译进内核的中间文件“itop4412_leds.o”,如下图所示。执行编译命令“make”,如下图所示,编译完成之后,使用命令“ls drivers/char/”可以看到“itop4412_leds.o”已经生成。

2025-10-21 15:31:11 432

原创 【北京迅为】iTOP-4412精英版使用手册-第三十八章 Menuconfig_Kconfig

如上图所示,这是一个文本类型的配置工具,根据提示“scripts/kconfig/conf -- oldaskconfig Kconfig”可以知道,这种方法是旧的配置方法,虽然 Linux 内核可能会长时间的支持,但是不人性化的操作方式,会降低效率,所以现在几乎淘汰了。前面实验提到过 menuconfig 实现的代码在源码“scripts”目录下,不过这里根本不用关心它是怎么实现的,只需要掌握怎么操作即可,就像学习开车,要知道怎么打方向盘,而不需要知道方向盘和轮子之间是怎么传动的。

2025-10-11 09:32:56 739

原创 【北京迅为】iTOP-4412精英版使用手册-第三十七章 Hello_Driver_Module

这一部分的知识,在后面会逐渐使用到。其次是内核,如下图所示,内核需要用到用户光盘目录“iTOP-4412 精英版光盘资料\04_镜像_QT 文件系统\zImage”(如果是 SCP 的核心板则使用 SCP 目录下的,POP 的则使用 POP 目录下的)下的“zImage”。最后是文件系统,如下图所示,使用的是最小文件系统,一个是启动文件“ramdisk- uboot.img”,一个是最小文件系统“system.img”,它们在“视频 02-DriverModule_01\ 最小系统”中。

2025-10-10 16:26:41 659

原创 【北京迅为】iTOP-4412精英版使用手册-第三十六章 Linux内核开发基础

每个 CPU 的子目录,又进一步分解为 boot,mm, kernel 等子目录,分别控制系统引导,内存管理,系统调用,动态调频,主频率设置部分等。从点亮LED灯开始步步深入,了解常用GPIO,PWM,I2C,SPI,USB等接口,探讨并发竟态解决机制,逐步入门Linux驱动开发。从程序员的角度分析,将 linux 底层和和应用分开,将 linux 底层和应用分开,做应用的做应用,做底层的做底层,各干各的。在 arch→arm→lib 目录中,有一些和硬件相关库函数,后面学习驱动的时候会使用到。

2025-10-10 15:24:02 649

原创 【北京迅为】iTOP-4412精英版使用手册-第三十五章 WEB控制LED

上面的代码是 C 语言,主要是完成了获取 web 提交过来的数据,然后对获得的数据解析,最后会调用 led 的 ioctl 函数来点亮或关闭 led。上面输入的是 HTML 格式的代码,主要是用到了通过表单向服务器提交信息,在表单里面指定了服务器端处理接收到信息的 CGI 程序是 myled,这是在 form 表单的属性里设置的,代码是“form action="/cgi-bin/myled.cgi" method="get”,使用的传递数据的方式是 get 方法,如下图所示。

2025-10-10 15:09:58 919

原创 【北京迅为】iTOP-4412精英版使用手册-第三十四章 搭建WEB服务器

然后找到“ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/”这一行,修改为“ScriptAlias /cgi- bin/ /www/cgi-bin/”,如下图所示。boa 程序运行需要一个配置文件:boa.conf,在 boa-0.94.13 目录下面有个默认的boa.conf 文件,把它拷贝到 NFS 文件系统的 etc/boa 目录下面,如下图。下面添加科技自动运行boa 的脚本,打开 NFS 文件系统的 etc/init.d/rcS 文件,如下图所示。

2025-10-10 14:39:03 822

原创 【北京迅为】iTOP-4412精英版使用手册-第三十三章 网络通信-UDP套接字

UDP 的特点是它不属于连接型协议,所以资源消耗小。上面的代码和前面一章的 TCP 的服务器程序差不多,首先也是定义一些变量,然后调用socket 函数创建一个套接字,这里 socket 函数的第二个参数是 SOCK_DGRAM,即用户数据报,也就是创建的 UDP 连接,然后调用 bzero 函数清空变量 servaddr 的值,然后设置servaddr 结构的值,接着调用 bind 绑定函数,然后调用 recvfrom 函数直接接收数据,在这个过程中我们没有调用 listen 和 accept 函数。

2025-08-21 10:38:54 646

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除