- 博客(10)
- 收藏
- 关注
原创 如何在Linux下创建一个守护进程
我们可以写一个创造守护进程的函数,在程序运行时调用这个函数从而把这个程序变成一个守护进程。这个函数需要有以下几个步骤:子进程等待父进程退出子进程使用setsid创建新的会话期,脱离控制台调用chdir将当前工作目录设置为/umask设置为0以取消任何文件权限屏蔽关闭所有文件描述符 用sysconf来获取最大的文件描述符个数将0、1、2定位到/dev/null下面就是一个创建守护进程的函数了。void create_daemon(void){ pid_t pid = 0; pi
2020-06-24 17:06:03
601
1
转载 Linux中open打开时flags传参O_RDONLY、O_WRONLY等的作用含义
概述os.open() 方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777。语法open()方法语法格式如下:os.open(file, flags[, mode]);参数file – 要打开的文件flags – 该参数可以是以下选项,多个使用 “|” 隔开:os.O_RDONLY: 以只读的方式打开os.O_WRONLY: 以只写的方式打开os.O_RDWR : 以读写的方式打开os.O_NONBLOCK: 打开时不阻塞os.O_APPE
2020-06-18 11:31:27
34616
1
原创 浅谈对Linux进程0、进程1、进程2理解
本文浅谈对内核中进程0、进程1以及进程2的理解。1、进程0 首先,进程0也叫做空闲进程,它不是一个用户进程,经过对内核代码的分析,发现进程0是一个内核进程,它的主要作用是进入一个死循环,在内核中它表现为一个函数idle,因为我们不可能让cpu像人一样没事干就歇着,只要晶振起振,它就必须不停的工作,而进程0就是为了解决cpu空闲时刻的问题,所做的工作就是在cpu空闲时给cpu一个死循环从而使cpu工作。 它的特殊性在于它是系统创建的第一个进程,并且还是唯一一个没有通过kernel_thread以
2020-06-18 09:48:22
2522
原创 Error: internal_relocation (type: OFFSET_IMM) not fixed up
今天在移植uboot重定位时在start.S中出现了这样的错误。经过分析发现是自己没有添加内存初始化就开始进行重定位所以导致的这个错误,对内存初始化进行移植就可以正常编译。因为对于程序来说,这行位置的变量由于未初始化内存,是没有的状态,所以也可以算为我传递的参数错误导致这一问题。...
2020-06-18 09:19:04
1803
1
原创 uboot移植初体验 -- 三星官方uboot移植
手边的开发板是S5PV210,下面进行对三星官方uboot的移植工作。1、移植前准备工作1.1、SSH环境搭建 我为什么想要搭建openssh的环境?是因为我想要在Windows环境下看代码并且改代码,所以需要此文件用来同步我Windows下和Linux下的代码,用这样的工具可以很方便的完成我的需求,提高我的效率。1.1.1、安装ssh-server 在命令行执行sudo apt-get install openssh-server命令即可安装,安装成功如下图所示。1.1.2、用SSH
2020-06-07 11:42:38
549
原创 编译内核时出现recipe for target ´kernel/timeconst.h´ failed的解决方案
今天在编译内核时出现以下错误,经查阅资料分析得知此问题在新版的Linux上编译老版的内核可能会出现此错误。Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373./x210v3_bsp/kernel/kernel/Makefile:138: recipe for target 'kernel/timeconst.h' failedmake[1]:
2020-06-03 11:54:25
1123
原创 嵌入式Linux -- uboot启动之第二阶段分析总结
上文uboot第一阶段为汇编阶段,主要负责初始化SoC内部的部件,而uboot第二阶段为C语言阶段,主要负责初始化SoC外部的硬件以及uboot本身的一些命令和环境变量等。下面解析第二阶段的主要函数start_armboot。1、start_armboot解析第一部分1.1、init_fnc_ttypedef int (init_fnc_t) (void); 在uboot/lib_arm/Board.c中的开始部分用typedef定义了一个函数类型。 init_fnc_t **init_f
2020-06-02 16:19:42
961
原创 嵌入式Linux -- uboot启动之第一阶段分析总结
在uboot启动阶段开始之前,先理清uboot整体启动过程原理,uboot大小假定为200KB。启动过程首先是开机上电后,板载的BL0开始运行,BL0会判断外部接入的启动设备(Flash)的类型并加载外部启动设备中的uboot的前16KB(BL1)到SRAM中去运行,BL1运行时会初始化DDR,初始化时钟等等一系列操作,最后把整个uboot读取到DDR中,然后用一句长跳转(从SRAM跳转到DDR)指令从SRAM中直接跳转到DDR中继续执行uboot直到uboot完全启动,uboot启动后在uboot命令
2020-05-30 22:27:09
1168
原创 嵌入式Linux -- 分析uboot中主Makefile
此主Makefile引用九鼎S5PV210中uboot的Makefile进行分析1、版本号、主机CPU架构以及主机操作系统部分VERSION = 1PATCHLEVEL = 3SUBLEVEL = 4EXTRAVERSION = XXXXXU_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)VERSION_FILE = $(obj)include/version_autogenerated.hHOSTARC
2020-05-30 13:15:24
233
原创 嵌入式Linux -- uboot内部文件关系及作用总结
此uboot基于九鼎公司的S5PV210进行分析1、各个文件的介绍(1).gitignore 这是一个git工具的文件,和git有关,跟uboot无关。(2)arm_config.mk 这是一个Makefile文件,将来在主Makefile中会调用此Makefile文件。(3)CHANGELOG、Changelog_Samsung、CHANGELOG-before-U-Boot-1.1.5 这三个文件是日志文件,记录了这个uboot版本较于之前版本的各种变化以及修改的记录。(4)config
2020-05-30 10:30:22
1014
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人