nuc972
JDSH0224
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
嵌入式uboot通过U盘更新内核
1. U盘插入终端上,通过控制台进入Uboot2. 启动USB控制器:U-Boot> usb start3. 查看U盘文件: U-Boot> fatls usb 0 ...... 2317952 uimage-20200831 6742016 ssh-rootfs-20200821-01.img ...... 15 file(s), 8 dir(s)4. 升级内核: 4.1 内核在NandF...原创 2020-08-31 18:10:55 · 1207 阅读 · 0 评论 -
NUC970系列资料之NuWriter使用手册
详见:http://www.emyard.com/?p=209原创 2018-07-19 18:54:15 · 1656 阅读 · 0 评论 -
linux gpio管脚功能配置API
#ifndef NUC970_GPIO_H#define NUC970_GPIO_H#include <mach/regs-gcr.h>#include <mach/regs-gpio.h>#include <mach/gpio.h>#define GPIO_R _IOW('g', 0, char) //申请#define GPIO_F _I...原创 2018-06-15 10:13:31 · 3068 阅读 · 0 评论 -
linux i2c驱动注册流程
1. i2c platform_device设备注册 static struct resource nuc970_i2c0_resource[] = { [0] = { .start = NUC970_PA_I2C0, .end = NUC970_PA_I2C0 + NUC970_SZ_I2C0 - 1, ...原创 2018-05-31 18:16:57 · 507 阅读 · 0 评论 -
uboot-spl理解
uboot分为uboot-spl和uboot两个组成部分。SPL是Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中的BROM来说的,之前的文章已经有所介绍,SOC启动最先执行的是BROM中的固化程序。BROM会通过检测启动方式来加载第二阶段bootloader。uboot已经是一个bootloader了,那么为什么还多一个uboot s...原创 2018-05-08 11:56:50 · 3105 阅读 · 0 评论 -
linux syscall 内核系统调用API接口
linux内核系统调用API源码路径:include\linux\syscalls.h源码:/* * syscalls.h - Linux syscall interfaces (non-arch-specific) * * Copyright (c) 2004 Randy Dunlap * Copyright (c) 2004 Open Source Development Labs ...原创 2018-05-20 22:39:59 · 2745 阅读 · 0 评论 -
ST75161 UC1698U液晶刷屏时间计算
人分辨事物的最高频率为24HZ,即反应一次要0.042s。也就是说电影播放时,每秒钟播放的图片数要超过24张,人眼才看不出图片之间的切换,看到的才是动态的影片效果。在LCD液晶开发的过程中,为了避免刷屏时出现卡顿,必须确保刷屏的时间小于0.042s,下面以实际开发中ARM为1Mhz与LCD控制器通信时的刷屏时间计算:1. 一屏显示需要3200((160*160分辨率)/8)个字节,即...原创 2018-05-05 10:25:52 · 2283 阅读 · 0 评论 -
linux uImage生成
简要: 有一个很简单的办法u-boot编译结束时,会在tool文件夹下面生成一个mkimage文件,将这个文件复制到交叉编译器目录下的bin文件夹下面,以后编译时就会生成uImage文件,省的用命令行的方式转了,否则就是内核在编译生产image后在使用mkimage工具打包生产uImage.mkimage在uboot源码下的路径:uboot/tools/*mkimage工具使用...原创 2018-04-14 10:54:29 · 1750 阅读 · 0 评论 -
linux 内核时间打印
struct timespec ts;ts = current_kernel_time();printk(KERN_ALERT "i=%d, channel=%d, %ld %ld\n", i, channel, ts.tv_sec, ts.tv_nsec);struct timeval tv;/*获取时间*/do_gettimeofday(&tv);printk(KERN_...原创 2018-04-13 10:37:13 · 4809 阅读 · 0 评论 -
嵌入式pppoe交叉编译流程
1. 下载rp-pppoe-3.11版本,然后解压2. 进入/rp-pppoe-3.11/src目录,新建一个install目录,用来保存pppoe的安装文件3. 配置configure./configure --host=nuc972-arm-none-linux-gnueabi- --prefix=/home/test/smbShare/pppoe/rp-pppoe-3.11/ins...原创 2018-08-01 13:55:30 · 752 阅读 · 0 评论 -
linux kernel decompress_kernel 启动解压
linux 解压后会跳转到,kernel执行地址: head.S中入口执行。解压之前的操作流程呢?1. linux kernel 被uboot load到内存后的入口函数arch/arm/boot/compressed/vmlinux.lds.in中定义了linux 入口:OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{....这里的star...原创 2018-11-15 23:11:12 · 1981 阅读 · 1 评论 -
__arch_info_begin、__arch_info_end
MACHINE_START(NUC970, "NUC970") .atag_offset = 0x100, .map_io = nuc970_map_io, .init_irq = nuc970_init_irq, .init_machine = nuc970_init, .init_time = nuc970_timer_init, .restart = nuc970_resta...原创 2018-11-14 23:40:40 · 948 阅读 · 0 评论 -
uboot2016.11版本移植过程
1. uboot-spl.bin烧写地址从0x200变位0x00000000 修改路径:uboot.v2016.11\include\configs\nuc970_evb.h 修改内容: 修改前:#define CONFIG_SPL_TEXT_BASE 0x200 修改后:#define CONFIG_SPL_TEXT_BASE 0x00...原创 2019-04-10 16:49:54 · 1023 阅读 · 0 评论 -
linux cramfs yaffs2 ramfs NTFS
Cramfs文件系统制作\解决U盘支持NTFS文件系统格式1.在内核的启动命令中配置cmdline为: Cramfs文件系统 root=/dev/mtdblock4 rootfstype=cramfs rootflags=inband-tags console=ttyS0,115200n8 rdinit=/sbin/init ro mem=64M quiet Yaffs2文件系统 root=...原创 2017-11-23 16:36:16 · 501 阅读 · 0 评论 -
国网安全防护--采集终端GPRS远程通信模块信息监控
ATI //获取厂家信息、版本NEOWAYN720REVISION V011OK+PBREADYAT+CPIN? //检测SIM卡的状态+CPIN: READYOKAT$MYCCID //查询SIM卡的序列号,就是卡上面的那串数字$MYCCID: "898607B9101700495279"OKAT+CSQ //查询信号强度+CSQ: 31,99OKAT+C...原创 2018-12-26 18:01:39 · 2707 阅读 · 0 评论 -
关于linux下UART串口编程的困惑
之前对struct termios结构体的几个字段一直困惑,主要不知道它的作用,内核对应的struct ktermios结构体如下struct ktermios { tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cflag; /* cont...原创 2018-12-05 23:23:40 · 1586 阅读 · 0 评论 -
linux uart应用编程
原文:https://blog.csdn.net/baweiyaoji/article/details/72885633之前在学习安信可A7模块时,是在PC上使用串口调试助手做了GPS的坐标数据信息的采集,同时分析了一些语句的含义。在这过程中,涉及到对嵌入式开发人员一个非常重要的知识:串口通信。在前篇也说到,我们将会自己写程序来对GPS数据进行解析,而这些数据正是靠串口来传输的。所以,本篇博文...转载 2018-12-05 23:08:40 · 1020 阅读 · 0 评论 -
linux uart termios结构体
一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员:tcflag_t c_iflag; /* 输入模式 */tcflag_t c_oflag; /* 输出模式 */tcflag_t c_cflag; /* 控制模式 */tcflag_t c_lflag; /* 本地模式 */cc_t...原创 2018-12-05 23:07:30 · 598 阅读 · 0 评论 -
linux中通过proc获取进程名以及PID
背景 给定某个线程的线程号tid,获取对应的进程名,或通过进程号获取进程名。源码(通过进程号获取进程名): void getNameByPid(pid_t pid, char *task_name) { char proc_pid_path[BUF_SIZE]; char buf[BUF_SIZE]; sprintf(proc_pid_path,...原创 2018-11-20 10:30:59 · 2424 阅读 · 6 评论 -
__tagtable_begin、__tagtable_end 内核命令行解析
System.mapc043ed2c T __tagtable_beginc043ed2c t __tagtable_parse_tag_cmdlinec043ed34 t __tagtable_parse_tag_revisionc043ed3c t __tagtable_parse_tag_serialnrc043ed44 t __tagtable_parse_tag_ramdi...原创 2018-11-15 00:08:34 · 851 阅读 · 0 评论 -
linux clk
1. 流程图2. 源码分析 本文以定时看门狗时钟分析,因看门狗的时钟源有四种可供选择,分别为:xin(12MHz)、xin128_div(12MHz/128)、pclk4096_div(76MHz/4096), xin32k(32.768K),下面逐个分析。2.1 涉及到的结构体固定频率的时钟结构体:struct clk_fixed_rate { struct clk_hw hw; ...原创 2018-04-06 15:04:00 · 1641 阅读 · 0 评论 -
linux watchdog
1. 定义定时器看门狗IWDG: 独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器,主要用于监视硬件错误;窗口看门狗WWDG:系统内部的故障探测器,时钟与系统相同。如果系统时钟不走了,这个狗也就失去了作用了,主要用于监视软件错误。这里只对定时器看门狗分析,不对窗口看门狗分析!!!2. 流程图3. platform_deviceplatform设备注册:static struct ...原创 2018-04-05 16:11:40 · 3314 阅读 · 1 评论 -
linux 打印堆栈方法
1. linux内核堆栈打印方法在需要打印堆栈的函数内部加入函数dump_stack()或 __backtrace();例:在下面gsmld_open(...)函数内部加入dump_stack():static int gsmld_open(struct tty_struct *tty){ struct gsm_mux *gsm; dump_stack(); if (tty->...原创 2018-02-08 11:05:42 · 12065 阅读 · 0 评论 -
linux GSM0710
1. 前言: 关于MUX的功能实现可以参考这篇博客:点击打开链接 在linux嵌入式平台GPRS联网中,我们通常除了pppd拨号之外、还需要AT指令收发、短信功能...而在实际中只有一个真实的物理串口与GPRS模块通讯,为了同时支持pppd+AT+短信的多种功能引入了MUX多路复用协议,它的目的是虚拟出多个逻辑串口来满足以上同时通讯的要求!2. gsm驱动源码2.1 线路规程操作...原创 2018-01-29 22:51:32 · 3696 阅读 · 1 评论 -
linux rz sz
参考博客:http://blog.csdn.net/jhj117/article/details/58847881、获得rzsz-3.48源码http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gzUbuntu 下可以直接用命令获得,命令如下:wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar...原创 2018-02-26 17:45:05 · 422 阅读 · 0 评论 -
linux ftp服务器
linux ftp服务器1. busybox配置ftp工具--- Applets Networking Utilities --> [*] ftpd [*] Enable upload commands [*] Enable workaround for RFC-violating clients [*] Enable authentication ... [...原创 2018-02-26 17:18:09 · 499 阅读 · 0 评论 -
嵌入式linux无法显示中文问题
1. 前言 网上关于嵌入式linux无法显示中文问题的文章很多,但又没有彻底的解决我的问题,甚是纠结啊...具体不支持的原因是busybox1.17.0之后的版本,shell命令行对中文输入及显示做了强制限制,所以即使内核设置了对中文的支持,但在shell下依然无法显示中文。2. 问题现象挂载U盘后,U盘内部为中文的目录和文件分别显示?????针对此种问题需修改如下:a. 去掉文件系统...原创 2018-02-26 16:23:03 · 4966 阅读 · 0 评论 -
linux nandflash
前言:原创 2018-01-29 22:50:38 · 189 阅读 · 0 评论 -
linux i2c
1.前言:linux I2C体系结构由三部分组成①I2C核心:提供I2C总线驱动和设备驱动的注册、注销方法②I2C总线驱动:主要包括两个数据结构,适配器I2c_adapter(包括algorithm结构体指针)、和algorithm数据结构(最终I2C的通信是由algorithm结构控制发送与接受数据)③I2C设备驱动:是对I2C硬件体系结构中设备端的实现,原创 2018-01-16 22:51:01 · 687 阅读 · 0 评论 -
linux spi
前言: linux spi驱动分层架构包括,应用层、系统调用层、spi接口层、spi核心层、spi驱动层、spi从设备,本博客首先分析spi-platfrom设备驱动的注册,从设备m25p80是如何绑定到spi总线上,在platform探测函数是如何注册spi-master主设备的,其次通过从设备spi nandflash分析其是如何工作的....1.spi驱动框架1.1.硬原创 2018-01-01 23:14:27 · 4772 阅读 · 0 评论 -
GPRS模块协议栈和终端协议栈的区分
1. 模块(外部)协议栈即采用AT指令收、发数据,由GPRS模块组TCP/IP协议帧与服务器通信,这里的AT指令,数据都是通过一个串口可以实现;2. 终端(内部)协议栈终端自身采用pppd内置TCP/IP协议与GPRS模块和服务器通信; 实际物理通信串口只有一个,要么用于AT指令收发,要么用于ppp协议栈数据通道,两者不能同时兼容,所以就引出了CMUX串口复用GSM0710的协议,即一个真实的物理...原创 2018-03-08 14:13:26 · 1843 阅读 · 0 评论 -
arm gpio管脚复用功能配置
gpio管脚除了输入、输出,还有其他复用功能(如作为nandflash、i2c、spi、lcd....),具体配置如下:1. gpio管脚功能配置p2732. 管脚输入、输出配置3. 管脚数据输入、输出4. 管脚中断配置...原创 2018-03-02 08:51:55 · 3330 阅读 · 0 评论 -
控制台上对同一个设备进行数据收发监控
1.启动一个控制台用来接收数据cat /dev/ttyUSB1 2.启动另外一个控制台用来发送数据echo -e "AT+CGMR\r\n">/dev/ttyUSB13. 调试信息发送控制台报文:[root@nxbb]$echo -e "AT\r\n">/dev/ttyUSB1 接收控制台报文:[root@nxbb]$cat /dev/ttyUSB1+CGMR: N720_EAB0CM...原创 2018-03-02 14:41:46 · 525 阅读 · 0 评论 -
ADC采样计算
1.首先确定ADC用几位表示,最大数值是多少。比如一个8位的ADC,最大值是0xFF,就是255。2.然后确定最大值时对应的参考电压值。一般而言最大值对应3.3V。这个你需要看这个芯片ADC模块的说明。寄存器中有对于输入信号参考电压的设置。3.要计算电压,就把你的ADC数值除以刚才确定的最大数值再乘以参考电压值。比如你ADC值为0x80,那么实际值就是0x80/(0xFF+1)*3.3V = 1....原创 2018-04-16 14:52:57 · 39754 阅读 · 2 评论 -
nuc970 杂记
1. 系统内存映射表2. 上电前初始化的硬件管脚注意每个管脚上电时需配置对应的电平该功能才能生效!3. CPU主频300MHz与264MHz切换主要修改两个地方,第一个地址0xB0000264修改对应的频率,另个是0xB0001834是对应SDRAM的的延时时间。打印时钟的源码:static void print_clock_info(void){ int apll_clk, upll_clk...原创 2018-04-08 15:33:46 · 3418 阅读 · 0 评论 -
linux 内核errno.h
linux 内核错误代码路径:linux-3.10.x-20171019\include\uapi\asm-generic\errno-base.h#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operation not permitted */#define E...原创 2018-03-13 10:12:56 · 1285 阅读 · 1 评论 -
linux nandflash
1. 前言:1.1 先分析下nandflash的布局、操作结构由图可以看出一片Nand flash为一个设备(device),其数据存储分层为:a. 1个设备(device)=1024个块(Blocks),块也是Nand flash擦除操作的最小单位。b. 1个块(block) = 64页(Pages),页是Nand flash写入的最小单位,对于每一个页,由数据块区域和空闲区域。数据区,也容...原创 2018-02-25 23:53:50 · 1807 阅读 · 0 评论 -
linux flash_eraseall nandwrite nanddump
1. 前言 先分析linux最上文件系统到底层硬件nandflash的框架图:1.1. 硬件驱动层:Flash硬件驱动层负责Flash硬件设备的读、写、擦除,Linux MTD设备的norFlash芯片驱动位于driver/mtd/chips子目录,nandflash的驱动位于drivers/mtd/nand子目录。1.2. MTD原始设备层:MTD原始设备层由两部分组成,一部分是MTD原始...原创 2018-03-04 16:20:27 · 3856 阅读 · 0 评论 -
linux GSM0710(2)
关于MUX源码分析可参考之前的一篇博客:点击打开链接名词定义 MUX: multiplexer protocol 多路复用协议,将原有的一条物理通道虚拟成几条可并发的逻辑通道,同网络协议中的物理链路,逻辑链路有点类似.实现上也类似,将逻辑通道上的数据打包,加上包头包尾,再发到物理通道 SABM: 即 Set Asynchronous Balanced Mode的缩写 ,叫...原创 2018-02-12 00:23:47 · 3257 阅读 · 0 评论 -
液晶控制器uc1698u和st75161读取厂商ID
1.液晶控制器管脚定义CS: 片选,低电平有效,高电平无效WR: 写操作,低电平有效,高电平无效RD: 读操作,低电平有效,高电平无效 C/D: 命令或数据通道 低电平是命令通道,高电平是数据通道D0~D8: 输入输出数据通道uc1698u和st75161的数据和命令操作是通过C/D管脚进行区分的,当读取液晶控制器里数据时,如厂商ID2. uc1698u厂商ID读取static unsigne...原创 2018-03-02 18:17:55 · 3300 阅读 · 0 评论
分享