自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iTop-4412 裸机程序(二十三)- I2C通信原理

I2C(Inter-Integrated Circui,集成电路总线),是一种用于连接微控制器和外部设备的串行通信协议。(时钟线和数据线)进行通信,从而实现简单而有效的数据传输。I2C通常用于连接传感器、存储器、显示器和其他外部设备。2024年02月14日。

2024-02-14 22:23:59 294

原创 iTop-4412 裸机程序(二十二)- RTC时钟

在BCD编码中,每个十进制数字用4位二进制数表示,即一个十进制数的每个数字都被编码为4位的二进制数。例如,十进制数57用BCD编码表示为 0b01010111,对应十六进制为0x57。RTC是实时时钟(Real Time Clock)的缩写,是一种用于计算机系统的硬件设备,用于记录和维护当前的日期和时间。RTC通常包括一个电池供电的计时器和一个晶体振荡器,以确保即使在停电情况下也能继续运行,并且能够提供准确的时间信息。我们使用 RTCCON寄存器控制时钟的读写。2024年02月14日。

2024-02-14 21:44:46 589

原创 iTop-4412 裸机程序(二十一)- 蜂鸣器与PWM

蜂鸣器的原理相对简单,学过单片机的同学应该比较了解。我们一般通过引脚输出PWM的输出频率和占空比来控制蜂鸣器的输出频率和音量。iTop-4412上的蜂鸣器通过一个NPN三级管控制,当MOTOR_PWM引脚输出高电平时导通。控制PWM波的相关寄存器如下,不再作相关解释,有疑问可以评论区。2024年02月13日。

2024-02-13 20:32:04 250

原创 iTop-4412 裸机程序(二十)- 按键中断Demo

上篇博文介绍了按键的轮询处理方式,本篇介绍按键的中断方式。

2024-02-13 17:06:16 429

原创 iTop-4412 裸机程序(十九)- 按键中断

上篇博文介绍了按键的轮询处理方式,本篇介绍按键的中断方式。

2024-02-13 17:01:15 825

原创 iTop-4412 裸机程序(十八)- 按键轮询

由上篇博文介绍,按键主要有两种响应处理方式,本篇介绍按键的轮询方式。

2023-03-28 23:58:56 278 1

原创 iTop-4412 裸机程序(十七)- 按键介绍

如果说LED是开发板最简单的输出设备,那么按键就是最简单的输入设备。iTop4412上使用的按键是较为常见的按键,有4个引脚,①和②以及③和④分别是联通的。当按键按下时,4个引脚都是导通的。接线时只要选择按键常开状态下不导通的两个引脚就好了。开关和按键的区别就在于能否自锁,开关按下后能自锁,而按键松手后会自动恢复。以图中的Home键为例,当开关处于常开状态时,此时PWRON1侧和KEY不导通,则VDD1V8_EXT经由一个10K的上拉电阻将引脚保持再高电平,当开关闭合时PWRON1侧和KEY侧导通,此时

2022-06-16 23:41:21 493

原创 iTop-4412 裸机程序(十六)- mkbl2

GitHub:https://github.com/Kilento/4412NoOS之前的裸机程序我们都是烧写了8KB大小的BL1,在上一篇移植printf的博文中编译生成的uart.bin其实已经超过了8KB,而烧写进入TF卡的景象其实只有8KB,但是我们发现程序依旧是有效的,这是因为恰好我们程序中有效的部分没有被截断,所以程序运行依然有效,但是这是无法后面的程序依旧有效。在分析4412的启动流程中我们已经知道了它的启动分为BL1阶段和BL2阶段,BL2阶段有15KB的大小,满足我们移植printf的需要

2022-06-16 22:45:39 357

原创 iTop-4412 裸机程序(十五)- stdio移植

libc库-stdio移植

2022-06-15 23:55:38 312

原创 iTop-4412 裸机程序(十四)- 串口程序Demo分析

串口Demo程序

2022-06-15 00:01:01 234

原创 iTop-4412 裸机程序(十三)- 串口初始化

串口模式及初始化

2022-06-14 23:25:14 416

原创 iTop-4412 裸机程序(十二)- 串口介绍

目录通信的几个基本概念串口DB9 标准通信的几个基本概念1. 同步通信与异步通信同步通信是指通信双方共用同一个时钟工作,而异步通信双方则按照各自的时钟进行工作。由于异步通信不使用同一个时钟,接收方就需要一定的手段与发送方进行“同步”。比如使用一个标志位来表示开始,一个结束位表示停止。而同步通信则不需要,但是发送方和接收方很多时候无法使用同一个时钟,所以异步通信更为常用。2. 电平信号和差分信号电平信号是指用电平值表示的信号 ,电平值分为高电平“1”和低电平值”0”。电平信号使用信号线和参考线(

2021-10-07 15:29:04 372

原创 iTop-4412 裸机程序(十一)- DRAM初始化

目录DRAM 初始化的 21 个步骤寄存器DRAM 初始化的 21 个步骤查看数据手册《SEC_Exynos4412_Users Manual_Ver.1.00.00》18.3 可知 LPDDR2 的初始化过程,DDR3 的初始化过程和它一致,我们可以使用以下的步骤来初始化我们设备上的 DRAM。DMC must assert and hold CKE to a logic low level to provide stable power for memory device and then a

2021-10-07 00:31:55 562

原创 iTop-4412 裸机程序(九)- 时钟

时钟的作用就如人离不开心脏的跳动一般,嵌入式系统的工作也离不开时钟的“跳动”。嵌入式SoC本身就是一个庞大的数字电路。这些电路的工作需要时钟进行同步,比如SoC中的CPU、串口、DRAM 控制器等等。时钟的产生时钟的来源一般可以有三种:外部晶振 + 内部晶振发生器外部时钟直接输入外部晶振 + 内部晶振发生器 + 锁相环 + 分频器像 Exynos4412 这种较为复杂的 arm 芯片一般都使用第3种,能产生更多种时钟信号(不同的时钟频率)。......

2021-10-07 00:26:33 381

原创 iTop-4412 裸机程序(十)- 引入DRAM

目录DRAM初始化初始化 DRAM 的意义DRAM 数据手册分析iTop-4412 原理图 DRAM 部分分析总线和 DRAM 芯片链接DRAM初始化在《Exynos4412 的启动过程详解(三)》 一文中我们介绍了 BL2 的启动过程。如下图:在 BL2 启动过程中在设置系统时钟后,初始化了 DRAM。初始化 DRAM 后续读取固件或者操作系统到 DRAM,后续就跳转到 DRAM 后执行。初始化 DRAM 的意义前面的裸机程序实验我们是将程序从 TF 卡拷贝到 SRAM(iRAM) 中,而这次

2021-10-03 23:01:38 296

原创 iTop-4412 裸机程序(八)- 代码重定位实战

目录源码实验重定位代码源码GitHub:https://github.com/Kilento/4412NoOS实验将流水灯代码从原有的内存地址重定位到新的内存地址执行实验现象:和原有代码现象相同重定位代码重定位代码的基本原理:将运行时的代码拷贝一份到链接脚本指定的地址。实际操作的时候从起始的地址开始拷贝,一直拷贝到 bss_start 地址。bss 段无需拷贝,清零即可。 ... adr r0, _start /* 短加载运行时地址 */ ldr r1, =_start

2021-09-09 00:10:19 223

原创 iTop-4412 裸机程序(七)- 代码重定位介绍

目录链接地址和运行地址位置无关代码什么是代码重定位为什么需要代码重定位程序段链接脚本链接地址和运行地址链接地址:给链接器指定将来程序希望被运行的内存地址运行地址:程序实际运行时的内存地址,由程序实际被加载到的实际内存地址决定PS:程序的链接地址和运行地址是不一定相同的位置无关代码位置无关代码(Position-independent Code,PIC):代码的链接地址和运行地址无关。位置有关代码:代码的链接地址和运行地址必须一致,否则无法运行。什么是代码重定位很多时候程序的链接地址和运行

2021-09-05 23:16:03 236

原创 iTop-4412 裸机程序(六)- 看门狗和 iCache

目录源码看门狗iCache参考资料源码GitHub:https://github.com/Kilento/4412NoOS看门狗用过单片机的人应该比较熟悉看门狗了,这是在程序异常时自动复位CPU的一个寄存器。在 Exynos 4412 同样有这样一个看门狗。查看数据手册可以得知它的地址:从前面的博文 Exynos4412 启动分析中我们知道在启动过程中一般首先要关闭看门狗。我们在不知道看门狗模式是否关闭的情况下,需要显示地关闭看门狗。关闭的汇编代码比较简单#define WATCHDOG

2021-08-29 23:09:45 236

原创 iTop-4412 裸机程序(五)- 调用C语言程序

设置C运行时环境

2021-08-29 12:45:17 410

原创 iTop-4412 裸机程序(四)- 流水灯

目录流水灯源码分析流水灯源码分析相对于上篇博客,流水灯的代码仅增加了 delay 延时函数,其他文件不变,代码我已经上传到 GitHub上:https://github.com/Kilento/4412NoOS/** Filename : start.S* Author : Kilento * Description: To Control LED on iTop-4412* Date : 2021-8-25*//*LED2 KP_COL0(NetLa

2021-08-25 23:29:29 482 2

原创 iTop-4412 裸机程序(三)- 点亮一颗LED灯源码分析

目录代码文件分析led 原理图分析寄存器操作代码文件分析root@ubuntu:~/4412NoOS/led/1.0_点亮一颗led# lslink.lds Makefile mkbl1.c s3c4412_gpio.h start.Sstart.S : 汇编文件,编译生成最后的 led.bin 文件s3c4412_gpio.h : Exynos4412 上的 GPIO 寄存器地址link.lds : 链接脚本文件。规定如何把输入文件内的 section 放入输出文件内, 并控制输出

2021-08-25 00:14:39 899

原创 iTop-4412 裸机程序(二)- 烧录程序,从点亮一颗LED灯开始

TF 卡烧录程序在 Exynos 4412 启动分析已经介绍了 TF 卡烧录镜像时需要保留1个扇区。从第2个扇区开始烧录 BL1 镜像。将程序烧录置 TF 卡的准备工作

2021-08-17 00:40:45 829

原创 iTop-4412 裸机教程(一)- 从启动方式开始

目录

2021-08-15 12:56:00 1801

原创 Exynos4412 的启动过程详解(四)

Exynos4412 iRAM 内存映射图这个图是 Exynos4212 启动文档中附的图,我在前面的博文中说过,Exynos4412 的 iRAM 实际上是一块 SRAM 芯片,这个芯片的特点是上电即可使用,无需初始化。所有被用来作为启动过程中的内存使用。Exynos4212 的前 5K 是预留的。后面存放 8K 的 BL1 和 16K 的 BL2。Exynos4412 和 Exynos4212 基本一致。区别在与 Exynos4412 的 BL1 作过一次升级。从原来的 8K 升级到了 15K。E

2021-08-11 23:51:30 421

原创 Exynos4412 的启动过程详解(三)

Exynos4412 BL0 启动流程BL0在启动流程中主要完成以下几件事情:Disable watchdog:关闭看门狗 Disable IRQ’s and MMU:关闭中断控制器和内存管理单元(MMU) Disable D-cache, Enable I-cache:关闭数据Cache,使能指令Cache Flush TLB’s and Invalidate caches:刷新TLB并失效caches Make CORE1 idle:让核心1处于空闲状态(只让核心0参与启动工作)

2021-08-11 00:05:32 394

原创 Exynos4412 的启动过程详解(二)

目录Exynos4412 启动框架图Exynos4412 一般启动过程Exynos4412 安全启动过程Exynos4412 几种启动模式Exynos4412 启动框架图Exynos4412 一般启动过程1.Exynos4412 有 64 KB ROM (iROM) 和 256 KB SRAM (iRAM) 作为 SoC内部存储2. SoC上电时首选运行 iROM 中的程序,这段程序由三星出厂时烧录。这段程序会初始化系统时钟和栈空间,并根据 OM(Operating M.

2021-08-08 19:24:58 468

原创 Exynos4412 的启动过程详解(一)

参考文档:《Android_Exynos4212_iROM_Secure_Booting_Guide_Ver.1.00.00.pdf》(启动过程文档,网上实在是找不到4412的启动过程分析,有的朋友还请分享给我,拜谢!(一些名字是4412的,内容都是4212的),只好用了4212的启动手册,它们是同一系列的,所以大部分地方是类似的。别的网友已经上传到CSDN,我就不重复上传了)《Exyno

2021-08-08 14:10:00 1390

原创 C 语言的运算符优先级表

认识 C 语言的优先级

2017-08-23 00:37:33 697

原创 ScreenToGif

ScreenToGif

2017-08-20 22:44:29 5692

原创 指针篇(4) -- 指针数组和数组指针

指针数组和数组指针

2017-07-13 00:37:28 436

原创 指针篇(3)-- 二重指针

从一重指针到二重指针

2017-07-10 22:13:10 517 2

原创 指针书写风格

「 int *p 」和「 int* p 」?你喜欢那种

2017-07-08 17:31:38 340

原创 指针篇(2)- 指针与数组

数组和指针的暧昧关系

2017-07-07 22:07:30 452

原创 指针篇(1)- 什么是指针?

初学指针

2017-06-17 22:46:08 611 1

原创 无外接屏幕使用树莓派

用最简单的设备使用树莓派,摆脱屏幕、键盘、鼠标的困扰

2017-06-05 17:30:47 10898 1

原创 博客应该怎么样排版

博客排版教学推荐

2017-05-30 12:33:01 5378 1

原创 聊聊树莓派吧(2)

续 >聊聊树莓派吧(1)上篇博文主要讲了树莓派的由来及其发售的一些事情, 这次我们来聊聊树莓派的历史。前言在知道树莓派能「干什么」之前, 我们首先必须知道它「是什么」。 树莓派被称为卡片式电脑, 它拥有计算机所有的功能并且将其完全集成到一张卡片大小的电路板上去。 我们知道一台电脑想要工作, 必须要有处理器(包含控制器和运算器)和存储器, 想要人机交互还需要有输入设备...

2017-05-29 16:16:45 1666 1

原创 聊聊树莓派吧(1)

想知道树莓派是什么?不妨看看这篇文章

2017-05-28 16:10:11 1726 3

原创 VMWare WorkStation如何合理地设置网卡

为虚拟机合理地设置虚拟网卡

2017-03-01 22:05:10 20017 1

原创 Ubuntu下安装arm-linux-gcc交叉编译链

安装交叉编译链

2017-03-01 20:53:38 644

空空如也

空空如也

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

TA关注的人

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