mk_fp用法Linux,Linux学习经验

日期 经验类型 标题 内容

2070-7-26 命令使用 查询已安装的软件包

rpm -qa xxx

2010-7-28 配置服务 Fedora12 telnet安装

E:日积月累整理嵌入式Linux经验累积Fedora12 telnet安装说明.txt

2010-7-28 系统设置 设置IP重启有效

/etc/sysconfig/network-scripts/ifcfg-eth0

2010-7-28 配置服务 yum 元数据无法读取

yum clean all

2010-7-28 配置服务 Fedora12 启用Samba服务后,/home不能共享

setsebool -P use_samba_home_dirs -1

2010-7-28 配置服务 Fedora12 Samba服务配置

E:日积月累整理嵌入式Linux经验累积Fedora12 samba服务配置.txt

2010-7-29 系统设置 设置服务启动有效

chkconfig serviceXXX on

2010-7-29 虚拟机 虚拟机disk备份恢复

直接备份disk和cfg文件,必须要有log文件,恢复时网卡变为eth1,要重新设置IP

2010-7-30 配置服务 输出NFS文件系统

E:日积月累整理嵌入式Linux经验累积输出NFS文件系统.txt

2010-7-30 配置服务 检测防火墙状态

host $ /etc/init.d/iptables status

2010-7-30 配置服务 关闭防火墙

host $ /etc/init.d/iptables stop

2010-7-30 系统设置 设置环境变量

编辑/etc/bashrc ,添加 PATH=$PATH:路径

2010-7-30 系统设置 使环境变量生效

source ~/etc/bashrc

2010-8-1 配置服务 查看nfs服务状态

/etc/init.d/nfs status

2010-8-1 配置服务 查看是否开机启动

chkconfig --list serviceXXX

2010-8-1 配置服务 关闭seLinux

E:日积月累整理嵌入式Linux经验累积关闭seLinux.txt

2010-8-2 经验心得 nfs启动无法挂载

uboot的bootargs参数里和nfs相关的ip地址及文件系统路径等信息设置,不能有回车符等非法字符

2010-8-3 经验心得 Login incorrect,root账号无法使用,其它账号密码错误

与/etc下的passwd、shadow、securety三个文件有关,重命名或删除最后一个文件即可

2010-8-4 Flash Nor Flash

NOR Flash可以支持随机访问,所以代码是可以直接在Flash上执行的

2010-8-13 系统设置 使bashrc中修改的环境变量立即生效

source ~/etc/bashrc

2010-8-18 配置服务 查看tftp服务状态

chkconfig --list |grep tftp

2010-8-30 命令使用 umount时显示device is busy

Fuser –m /mnt/rdmnt,找出那个进程还使用当前文件夹

2010-9-2 命令使用 查找当前目录的文件

find -maxdepth 1 -name xxxx

2010-9-2 命令使用 统计查找到的结果数量

find -name xxxx|wc -l

2010-9-2 命令使用 删除查找到的文件(单进程)

find -name xxxx|xargs rm

2010-9-2 命令使用 批量替换查找到的文件中的字符串 (xx -> yy)

grep -i 's/xx/yy/g' find *|xargs grep xx

2010-11-29 linux编程 Linux网络编程

用fnctl设置connect函数为非阻塞方式以后,程序设计为跳出循环,但此时函数会立即返回,导致执行一段后面的循环体再跳出循环

2010-11-30 系统设置 嵌入式开发板的IP地址 开

发板的IP地址由uboot参数bootargs指定,内核启动时从uboot中读取

2010-12-15 DAVINCI 在DVSDK中include内核头文件,编译时无法找到的解决办法

在应用程序MAKEFILE中加入 C_FLAGS += -I/VMShare/DM365EVM/kernel/linux-2.6.18_pro500/include/

2010-12-28 linux编程 查看编译后程序用到的库

ldd hello

2011-1-16 内核驱动 获得指定设备的设备号shell

awk "$2=="$MODULE_NAME" {print $1}" /proc/devices

2010-2-4 busybox 在做好的ramdisk中添加busybox命令

重新编译busybox后,将生成的busybox文件拷贝到ramdisk/bin/下替换原文件,再手动为新命令创建连接 ln -s busybox awk

2010-2-21 内核驱动 开机一段时间logo消失的问题

注释掉/drivers/char/vt.c 的blank_screen_t()函数中的内容

2010-3-6 内核驱动 上电显示logo时去掉闪烁光标

注释掉/drivers/video/fb_con.c 的fb_flashcursor()和fbcon_cursor()函数中的内容

2011-3-25 内核驱动 锁的哲学

走别人的路,让别人无路可走.

2011-4-4 内核驱动 usbfs记录的设备信息

/proc/bus/usb/devices

2011-4-9 C语言 定义(bit)定长的数组

unsigned long devicemap[128/(8*sizeof(unsigned long))]

2011-4-20 内核驱动 电源管理的精髓

开源战士范仲淹有一句话把这电源管理机制下的子设备诠释得淋漓尽致:先天下之睡而睡,后天下之醒而醒

2011-6-3 内核驱动 EXPORT_SYMBOL后模块提示symbol undefined

确认内核目录下的module.symvers有导出的变量,否则make clean后重新编译内核

2011-6-12 shell 系统输出到变量用反引号`

VAR=`echo 'abcd'`

2011-7-1 内核驱动 evbug

input设备的打开关闭在evbug模块上,否则无法使用

2011-8-14 C语言 定义结构体的内存对齐方式

使用指令#pragma pack (n),编译器将按照n 个字节对齐。使用指令#pragma pack (),编译器将取消自定义字对齐方式。 如果是单独定义结构体的对齐方式,就在typedef的结构体名称前面加__attribute__ ((packed))

2011-9-27 命令使用 mount

--bind 使挂载过后的目录继承挂载目录的属性,如 mount --bind /old_dir /new_dir, 原来old_dir 777 new_dir 111, 挂载过后 new_dir 777

2011-10-10 C语言 查看已编译成可执行文件的符号表

nm a.out

2011-10-10 C语言 定义一个符号的别名

int foo() __attribute__ ((weak, alias(”__foo”)));

2011-10-11 C语言 打印程序编译的时间

printf("nTI reference design host application (build on %s at %s).n",__DATE__,__TIME__);

2011-10-12 命令使用 在开发板上使用busybox的tftp命令 tftp

tftp [OPTION]... HOST [PORT]

Transfer a file from/to tftp server using ``octet'' mode

Options:

-l FILE Local FILE

-r FILE Remote FILE

-g Get file

-p Put file

-b SIZE Transfer blocks of SIZE octets tftp -g -r 1.mp3 192.168.151.52

2011-11-3 linux编程 内核proc文件系统编程

编写proc_read的时候注意page参数是从内核分配页起始地址开始,要读取偏移量的地址需要page偏移lseek设定的地址

2011-11-4 命令使用 用find同时查找多个文件

find */ -name *.mk -o -name Makefile

2011-11-14 虚拟机 电脑重启以后虚拟机的系统无法运行,提示文件损坏

在windows下运行磁盘扫描

2011-11-14 系统设置 查看内核printk输出消息级别低于KERN_WARNING的提示

cat /proc/kmsg

2011-12-16 linux编程 查看线程自己的tid,top shift+H命令看到的内容

syscall(__NR_gettid)

2011-12-22 系统应用 系统启动提示串口:-sh: can't access tty; job control turned off

启动初始化文件/etc/inittab的最后一行如果调用用户脚本,需要将命令执行方式设置为respawn,表示执行完脚本后shell窗口继续使用,ttyS0::respawn:/usr/local/bin/autorun.sh

2011-12-22 网络编程 多网卡时socket绑定指定网卡

见《对sock绑定网卡.txt》

2012-2-17 内核调试 反汇编内核代码

1、修改源代码的顶层 Makefile:“CC =$(CROSSCOM_PILE)gcc -g” 使成生的vmlinux中含有debug信息

2、objdump -S -l -z vmlinux > vmlinux.txt反汇编vmlinux到vmlinux.txt,vmlinux.txt含有汇编和c源文件的混合代码,看起来很方便。而且能一步步看linux怎么一步步运行的

3、也可以不加gcc -g 然后arm-none-linux-gnueabi-objdump -D vmlinux > kernel_asm.txt来调试,反汇编后没有对应的C代码

2012-2-23 shell 脚本编程注意换行符后面的空格

脚本中使用换行符时,注意后面不能有空格,否则会导致下一行命令执行结果异常

2012-3-6 linux编程 流式操作文件stream(FILE *)的同步方法

要先flush stream,即先fflush() 然后才sync(),fsync,fdatasync。fflush()与后面三个的区别,在于前者是同步libc-level的buffer,而后者则是同步kernel-level buffers。

2012-3-6 linux编程 sync、fsync、fdatasync的区别

sync把数据缓冲区放入写队列就返回,不是真正的硬件同步写

fsync等数据写入磁盘才返回,会更新文件属性

fdatasync只影响文件的数据部分,不更新属性

2012-3-6 linux编程 取得文件流stream(FILE *)对应的文件描述符

FILE *fp;

int fd = fileno(fp);

2012-3-8 shell shell中返回字符串的方法

1、用全局变量

2、用进程替换

func()

{

echo ""result""

}

val=$(func)

2012-3-8 shell shell中使用全局变量的方法

export A=

2012-3-19 配置服务 查看samba运行的端口

netstat -tlnp |grep smb

2012-3-20 配置服务 挂载nfs

mount -t nfs -o nolock 192.168.125.127:/VMShare_Amb_fc15/nfs/Amb1/ /mnt/nfs

2012-3-29 命令使用 find与cp连用

find ./* -name "*.so.7.2.0" -exec cp {} . ;

2012-5-31 命令使用 查找文件中的字符串

grep -nr "CONFIG_AMBARELLA_EXPAT_SUPPORT" *

2012-6-1 网络设置 网络不通

清除TCP/IP高级设置里的地址

2012-6-11 C++ 提示 ostream does not name a type

命名空间的问题,这样写就好了 std::ostream,或using namespace std;

2012-6-19 shell 脚本运行提示:bad interpretor /bin/sh^M

文件格式不是linux的,用dos2linux转一下,或者vi中使用set fileformat=unix命令

2012-8-29 命令使用 将dos格式文件转换为unix格式

dos2unix */*/*/* or vi -> set fileformat=unix

2012-10-26 命令使用 在开发板上重新挂载根文件系统

mount -o rw,remount /

2013-2-20 命令使用 直接写文件命令

echo “register time” | cat >> record.txt

2013-2-21 命令使用 终端设置

stty raw 不带换行,阻塞信号

stty cooked 恢复默认模式

2013-2-25 linux编程 编译链接提示:ld: cannot find -lc

在编译时添加了 gcc -static 导致找不到libc库

2013-9-10 linux编程 C++ gcc dename-mangling

readelf -s libxxx.so | c++filt

2013-10-15 编译 两个静态库连有弱符号的调用关系,直接链接不会进行符号解析,程序运行时出现符号地址无法解析

将两个静态库用 ar -x 还原成.o 文件再编译链接,编译器会解析.o文件的符号

2013-11-30 命令使用 进程与文件,lsof的使用

查看进程打开文件: lsof -p PID ;

查看文件被哪个进程打开:lsof FILENAME

查看进程打开的文件数:

lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr| more

2013-12-2 命令使用 统计代码行数

1. 去掉注释和空行

find -name ""*.[ch]"" -exec cat {} ; | sed '/^$|//|/.*|*//d'|wc -l

2. 带注释和空行一起统计

find -name ""*.[ch]"" -exec cat {} ;|wc -l

2014-1-21 编译 查看静态库文件

ar -t

2014-2-18 shell 利用env来查找脚本解释器路径

#!/usr/bin/env python

2014-12-27 linux知识 守护进程与僵尸进程

僵尸进程:子进程退出后父进程一直不能回收资源

守护进程fork两次:使父进程退出,子进程被init接管,避免僵尸进程出现

2015-6-19 gdb GDB启动程序

mkdir -p /tmp/nfs && chmod 777 /tmp/nfs &&mount -t nfs -o nolock 10.82.16.75:/VMShare_Amb_fc15/nfs/Amb1/ /tmp/nfs && chmod -R 777 /tmp/nfs/S2_Product

(gdb) handle SIGPIPE nostop noprint ignore

(gdb) directory /tmp/nfs/S2_Product/

2015-8-12 tcpdump tcpdump抓包wireshark分析

tcpdump -i eth0 'tcp port 2809' -w /mnt/nfs/tcpdump/1.cap

2016-5-7 shell 读取目录下文件名时,处理空格

使用IFS替换分隔符:

process()

{

IFS='

'

...

IFS=$oldIFS

}

2016-5-14 shell 删除找到的文件时,如果带空格,xargs的处理:

find -name "._*" | xargs -i rm {}

### Android 设备上烧录 `.hex` 文件的方法 在 Android 平台上烧录 `.hex` 文件通常涉及以下几个方面:硬件支持、工具链的选择以及具体的烧录流程。以下是详细的说明: #### 1. **硬件支持** Android 设备本身并不直接提供对 `.hex` 文件的支持,因为 `.hex` 文件通常是用于微控制器或其他嵌入式系统的固件文件格式。因此,在 Android 上实现烧录功能的前提条件之一是设备具备 USB OTG 或其他接口来连接目标硬件。 对于某些特定的开发板(如树莓派或 STM32 开发板),可以通过 Android 应用程序配合串口通信协议完成烧录操作[^1]。 --- #### 2. **所需工具** 为了在 Android 设备上烧录 `.hex` 文件,可能需要用到以下几种工具或方法: - **USB 转 TTL 适配器** 如果目标设备通过串口接收数据,则可以使用 USB-TTL 转换模块,并将其连接至 Android 的 USB 接口。 - **ADB Shell 命令** 使用 ADB (Android Debug Bridge) 可以执行一些底层命令,例如 `dd` 来写入二进制数据到指定分区[^2]。 - **第三方应用程序** 存在部分专门设计的应用程序可以在 Android 手机上完成 `.hex` 文件的烧录工作。这些应用一般会调用 Java NDK 编写的本地库或者利用 Python 解释器运行脚本。 --- #### 3. **具体步骤** ##### a. 准备环境 确保安装好必要的驱动程序并确认手机已开启开发者模式与 USB 调试选项。如果是基于 Linux 内核编译的目标系统,请先解压源码: ```bash tar xvf /path/to/linux-source.tar.gz -C /path/to/destination/ ``` ##### b. 配置项目依赖项 假设需要集成 DRM 功能,则应在项目的 `Android.mk` 中声明相关组件: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := android.hardware.drm.cpp LOCAL_SHARED_LIBRARIES += libutils libcutils include $(BUILD_SHARED_LIBRARY) ``` ##### c. 实现烧录逻辑 编写一段简单的代码片段作为示例展示如何加载 `.hex` 数据并通过 SPI/I2C 发送出去: ```cpp #include <fcntl.h> #include <unistd.h> void write_hex_to_device(const char* device_path, const char* hex_file){ int fd = open(device_path, O_WRONLY); if(fd == -1){ perror("Failed to open device"); return; } FILE *fp = fopen(hex_file,"rb+"); if(!fp){ close(fd); perror("Cannot read HEX file"); return ; } unsigned char buffer[1024]; size_t bytes_read; while((bytes_read=fread(buffer,sizeof(unsigned char),sizeof(buffer)-1,fp))>0){ ssize_t written_bytes=write(fd,&buffer,bytes_read); if(written_bytes !=(ssize_t )bytes_read ){ fprintf(stderr,"Error writing data\n"); break; } } fclose(fp); close(fd); } ``` ##### d. 测试验证 最后一步是对整个过程进行全面测试,包括但不限于检查传输速度、校验和匹配度等方面的内容。 --- ### 注意事项 由于不同厂商生产的芯片架构差异较大,实际操作过程中可能会遇到各种兼容性问题。建议查阅对应 MCU 官方文档获取更精确指导信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值