![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
arm-linux
_小乔_
这个作者很懒,什么都没留下…
展开
-
C - float和double在内存存储解析
float和double在内存存储解析C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储。float数据占用32bit,double数据占用64bit。我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵...转载 2019-11-10 22:46:59 · 202 阅读 · 0 评论 -
C语言中数组名和&数组名的区别
#include <stdio.h>int main(){ int arr[5] = {1,2,3,4,5}; printf("%x\n",arr); printf("%p\n", arr); printf("%x\n", arr+1); printf("%p\n", arr+1); printf("%x\n", &arr + 1); printf("%...原创 2019-11-05 15:48:31 · 412 阅读 · 0 评论 -
ASCll码表
ASCII控制字符二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ␁ 标题开始 0000 0010 2 02 STX ␂ 本文开始 0000 00...原创 2019-11-03 20:31:39 · 636 阅读 · 0 评论 -
strcmp介绍
strcmp用于比较两个字符串大小strcmp原型: #include <string.h> int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n);return:返回比较大小,当s1<...原创 2019-11-03 01:21:08 · 418 阅读 · 0 评论 -
scanf输入完数据后,缓冲中还有'\n'
在用scanf写程序时,遇见scanf输入完数据后,缓冲中还存在\n,在此记录。#include"stdio.h"int main(){ int a =0,i=0; char name[10]={0}; scanf("%d",&a); fgets(name,20,stdin); for(i= 0;i&l...原创 2019-10-29 22:34:56 · 167 阅读 · 0 评论 -
grep命令_Linux grep命令
语法格式:grep 【options】【pattern】【file】 grep [参数] [匹配模式] [查找的文件]注意:用于搜索文本内容1.grep 是 Linux 系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据。2.grep 命令里的匹配模式或模式匹配,都是你要找的东西,可以是普通的文字符号也可以是正则表达式。参数选项:参数 说明 -...转载 2019-10-25 10:44:21 · 444 阅读 · 0 评论 -
linux目录结构
【常见目录说明】 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/hom...转载 2019-10-17 11:11:30 · 122 阅读 · 0 评论 -
Linux:使用读写锁使线程同步
读写锁与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。读写锁状态:一把读写锁具备三种状态:1. 读模式下加锁状态 (读锁)2. 写模式下加锁状态 (写锁)3. 不加锁状态读写锁特性: 读写锁是"写模式加锁"时, 解锁前,所有对该锁加锁的线程都会被阻塞。 读写锁是"读模式加锁"时, 如果线程以读模式对其加锁...转载 2019-10-17 10:33:46 · 82 阅读 · 0 评论 -
深入解析条件变量(condition variables)
什么是条件变量(condition variables)引用APUE中的一句话:Condition variables are another synchronization mechanism available to threads.These synchronization objects provide a place for threads to rendezvous. Wh...转载 2019-10-17 10:23:10 · 208 阅读 · 0 评论 -
信号量和互斥锁的区别
信号量和互斥锁:信号量(semaphore[ˈseməfɔ:(r)])用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作。而互斥锁(Mutual exclusion,缩写 Mutex)是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加...转载 2019-10-17 10:00:13 · 180 阅读 · 0 评论 -
关于*(mmu_tlb_base + (virtuladdr >> 20))的理解
对于MVA到PA转换过程,以及描述符所扮演的角色,请看下图:来看代码:unsigned long virtuladdr, physicaladdr;unsigned long *mmu_tlb_base = (unsigned long *)0x30000000;//对应上图TTBvirtuladdr = 0xA0000000;//对应上图MVAphysicaladdr = 0x...转载 2019-10-13 01:55:27 · 184 阅读 · 0 评论 -
ldr和adr在使用标号表达式作为操作数的区别
ARM汇编有ldr指令以及ldr、adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, =_start_start: b_start编译的时候设置 ...转载 2019-08-26 23:04:47 · 166 阅读 · 0 评论 -
u-boot 之make S3C24X0_config
我们在编译uboot是执行 make 100ask24x0_config100ask24x0_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0make 100ask24x0_config 就相当于执行@$(MKCONFIG) $(@:_conf...转载 2019-09-08 00:45:21 · 126 阅读 · 0 评论 -
uboot主Makefile分析
uboot主Makefile分析https://blog.csdn.net/Ultraman_hs/article/details/52752234https://blog.csdn.net/qq_29350001/article/details/51721996uboot根目录下的config.mk的分析https://blog.csdn.net/Ultraman_hs/arti...原创 2019-09-07 22:29:45 · 134 阅读 · 0 评论 -
Ubuntu虚拟机无法ping通windows,反之可以的解决办法
最近在搭建windows和ubuntu虚拟机环境的时候,配置好局域网ip地址,默认网关,子网掩码之后发现只有windows端可以ping通Ubuntu,但是反之Ubuntu始终无法ping通windows。解决方法总结如下:1、选中windows右下角的网络图标,选择打开“网络和共享中心”;2、在打开的页面中选择左侧的防火墙选项,打开win7的防火墙;3、选择“高级设置”;4、从新...转载 2019-09-02 17:02:53 · 513 阅读 · 0 评论 -
如何理解U-Boot中的#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r9")
在U-Boot的源码中,使用了寄存器r9来表示全局数据结构gd。 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r9")那么,到底应该如何定义一个寄存器变量呢?从GCC的使用手册中可知,定义如下: ...转载 2019-08-31 20:12:24 · 705 阅读 · 0 评论 -
ubuntu14.04彻底卸载ibus安装fcitx拼音输入法
最近想换下ubuntu14.04中的ibus输入平台,使用fcitx的拼音输入法,如何彻底卸载ibus呢?方法/步骤 卸载ibus。 $sudo apt-get remove ibus 清除ibus配置。 $sudo apt-get purge ibus 卸载顶部面板任务栏上的键盘指示。 $sudo apt-get remov...转载 2019-08-30 10:14:53 · 2805 阅读 · 0 评论 -
Ubuntu解压缩命令详解
命令:taru对压缩文件进行操作1.-c: 建立压缩档案2.-x:解压3.-t:查看内容4.-r:向压缩归档文件末尾追加文件5.-u:更新原压缩包中的文件u这五个是独立的命令,压缩解压都要...转载 2019-08-29 22:23:32 · 186 阅读 · 0 评论 -
Linux中2>&1使用
一 相关知识1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |)。2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes `)。3) 默认地,标准的错误输出到终端,但是也可以重定向到文件。4)标准的输入,输出和错误输出分别表示为STDIN,STDOUT,STDERR,也可以用0,1,2来表示。5)其实除了以上常用的3...转载 2019-08-28 16:41:50 · 119 阅读 · 0 评论 -
uboot根目录下的config.mk文件学习
本篇要学习的config.mk文件,位于uboot源码的根目录下, 其包含了子目录下许多同名的config.mk。所以千万注意这些同名文件的主次区别该文件内容主要结构为:1. 设置各种路径2. 设置主机环境的编译选项3. 确定各交叉编译工具4. 确定各种级别的编译选项5. 指定链接脚本6. ...转载 2019-09-08 01:28:01 · 621 阅读 · 0 评论 -
linux内核编译 fatal error: curses.h: 没有那个文件或目录解决办法
执行make menuconfig时出现如下错误@ubuntu:/home/dev/busybox-1.19.3#make menuconfigHOSTCC scripts/kconfig/lxdialog/checklist.oIn file included from scripts/kconfig/lxdialog/checklist.c:24:0:scripts/kconfig/...转载 2019-09-09 23:49:47 · 6857 阅读 · 0 评论 -
汇编 bne 1b
以前看过的汇编代码只有b,bl和bne label等,从未见过bne 1b,今天在看韦东山老师的《Linux完全开发手册》第六章有如下代码:1:ldr r4,[r2],#4str r4,[r1],#4cmp r1,r3bne 1b顿时觉得代码写错了,最后一句应该是bne 1,但是后面居然还有一个1的标号,同样还有bne 1b语句,后面在网上查了之后...转载 2019-08-08 23:25:55 · 644 阅读 · 0 评论 -
反汇编文件(.dis文件)的理解
理解什么是:标号地址、标号名字、指令地址、指令机器码、指令机器码反汇编到的指令下面以一段dis文件中代码来简单理解一下反汇编的读法(为了方便,部分说明已经卸载代码块双斜杠后面)led.elf: file format elf32-littlearm //表明这是由led.elf文件反汇编得到的dis文件 ...转载 2019-10-10 22:57:53 · 1476 阅读 · 0 评论 -
c语言编译过程详解
预处理:展开头文件/宏替换/去掉注释/条件编译 .c --> .i (test.i main .i)gcc -E编译:检查语法,生成汇编 .i --> .s (test.s main .s)gcc -S...原创 2019-10-10 10:08:27 · 76 阅读 · 0 评论 -
Linux 开发 | 学习 Makefile
@(linux 编程)[开发技能, 工具使用]What isGNU MakeMake 是控制工程中通过源码生成可执行文件和其他相关文件的工具。Make 通过 Makefile 获取如何编译、链接和安装清理工程的信息。本文记录如何为自己的工程编写一个Makefile,主要参考GNU Make Manual。获取详细信息请直接阅读手册。[TOC]上部分Makefile 基本...转载 2019-10-08 13:50:31 · 322 阅读 · 0 评论 -
Ubuntu设置和查看环境变量
查看环境变量有三个命令 env env命令是environment的缩写,用于列出所有的环境变量 export 单独使用export命令也可以像env列出所有的环境变量,不过export命令还有其他额外的功能 echo $PATH echo $PATH用于列出变量PATH的值,里面包含了已添加的目录 设置方式设置环境变量通常有两种设置方式把你的路径...转载 2019-09-27 16:46:58 · 114 阅读 · 0 评论 -
linux创建用户
*****************************************************************************sudo useradd -g sudo -m usernamesudo passwd username***************************************************************...转载 2019-09-25 19:40:26 · 69 阅读 · 0 评论 -
不在 sudoers 文件中。此事将被报告。
使用Linux,初学使用root不要太方便,工作中却不会给你这样的,必须要用自己的账号。新账号需要添加sudo的权限。su 使用root登陆 visudo 在root下添加自己的用户名 root ALL=(ALL) ALL ryan ALL=(ALL) NOPASSWD: ALL这里nopasswd是为了sudo的时候不用确认密码...转载 2019-09-20 15:40:02 · 112 阅读 · 0 评论 -
Ubuntu安装已下载了.deb文件的软件
1、转到安装包所在目录 cd 目录名/...2.sudo apt install daemon3、用dpkg命令运行安装包 sudo dpkg -i 安装包名称.debdpkg常用命令: sudo dpkg -I 文件名.deb //查看iptux.deb软件包的详细信息,包括软件名称、版本以及大小等(其中-I等价于--info...转载 2019-09-18 20:56:18 · 106 阅读 · 0 评论 -
ARM汇编中PC寄存器详解
近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中。当然,文中许多介绍参考了许多零散的文章,本文重点工作在于对相关概念的整理收集,并按相对合理顺序引出后文中对hook技术中的一些难点的解读。Android平台大多采用了ARM架构的CPU,而ARM属RISC,与X...转载 2019-08-18 15:36:36 · 9653 阅读 · 0 评论 -
ARM简单启动代码及中断处理分析
前言:本篇分析的是一个最精简的启动代码,并且包含一个简单的中断处理,C程序部分省略,重点分析汇编部分,这是因为对于我来说,汇编代码实在是让人厌烦,但是又不能不用。下面是对代码的分析,红色部分是分析结果.extern main //.extern 表示main在另外的文件中定义,在这里要引用,至于为什么只声明了extern而没 ...转载 2019-08-18 14:14:07 · 597 阅读 · 0 评论 -
烧写JZ2440 开发板
开发板:JZ2440工具:jlink,USB1、裸板烧写使用 oflash 命令烧写程序:(1) 打开 Windows 命令窗口 cmd。把要烧写的文件leds.bin(要烧写文件)拷贝到 D 盘。(2) 先在窗口输入“d:”(暂定本盘存放leds.bin)切换到 D 盘根目录,然后输入“dir”,查看当前路径的文件,看到“leds.bin”。(3)然后输入“ofl...原创 2019-07-27 21:24:26 · 234 阅读 · 0 评论 -
Linux ls -l 各字段解释,硬链接软连接
转:https://blog.csdn.net/zhuoya_/article/details/77418413转载 2019-08-04 19:30:34 · 452 阅读 · 0 评论 -
1-linux裸机-点亮LED灯
参考:1.https://blog.csdn.net/gushaofeng/article/details/53572717 2.https://blog.csdn.net/huangbin0709/article/details/51931347 制作交叉编译工具 不能使用 ubuntu16.04 自带的 arm-linux-gcc 3.45编译不同版本...转载 2019-08-04 21:12:38 · 410 阅读 · 0 评论 -
2-gcc命令详解
GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。gcc命令下各选项的含义...转载 2019-08-04 21:38:30 · 185 阅读 · 0 评论 -
汇编指令详解
一、数据传送指令1、传送指令:MOV (move)格式:mov dst,src具体用法:(1) CPU内部寄存器之间的数据传送,如:mov ah,al(2) 立即数送至通用寄存器(非段寄存器)或存储单元,如:mov al,3 mov [bx],1234h(3) 寄存器与存储器间的数据传送,如:mov ax,var mov ax,[bx]2、交...转载 2019-08-07 21:34:27 · 4158 阅读 · 0 评论 -
汇编:ldr 和 str指令
ldr命令:把数据从内存加载到寄存器。ldr r0, =addr ;r0 = addrldr r1, [r0] ; r1 = *r0ldr r1, [r0, #4] ; r1 = *(r0+4)ldr r1, [r0, #4] ! ; r1 = *(r0+4);r0=r0+4;ldr r1, [r0], #4 ; r1 = *(r0);r0=r0+...转载 2019-08-08 00:25:46 · 3588 阅读 · 0 评论 -
ARM的存储控制器以及如何使用SDRAM
关于ARM的存储控制器以及如何使用SDRAM把代码从steppingstone拷贝到sdram中运行,大小为4kb学习存储器寄存器的配置。参考s3c2440和sdram的datasheet,很容易地把寄存器配置好,就可以使用SDRAM了存储控制器的寄存器总共有13个:SWSCON, BANKCONx (x=0~7), REFRESH, BANKSIZE, MRSRB6, MRSRB...转载 2019-08-08 23:27:15 · 283 阅读 · 0 评论 -
关于adrl指令的问题: adrl r2, mem_cfg_val
学习韦东山老师sdram 实例程序,有部分看不懂什么意思,问题如下:mov r1, #1207959552 @ #1207959552=0x48000000存储控制器的13个寄存器的开始地址 adrl r2, mem_cfg_val @ 这13个值的起始存储地址 add r3, r1, #52 @ 1...转载 2019-08-09 22:46:22 · 323 阅读 · 0 评论 -
哈佛结构和冯·诺依曼结构的区别
哈佛结构(英语:Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位...转载 2019-08-11 00:00:33 · 377 阅读 · 0 评论