zhou1232006
码龄14年
关注
提问 私信
  • 博客:219,720
    219,720
    总访问量
  • 24
    原创
  • 2,064,829
    排名
  • 39
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:福建省
  • 加入CSDN时间: 2010-05-24
博客简介:

zhou1232006的专栏

查看详细资料
个人成就
  • 获得53次点赞
  • 内容获得19次评论
  • 获得167次收藏
创作历程
  • 24篇
    2011年
  • 11篇
    2010年
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

186人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

__main函数内幕——从加载视图到执行视图.pdf

发布资源 2012.02.23 ·
pdf

linux世界里的时间

通常,操作系统可以使用三种方法来表示系统的当前时间与日期:①最简单的一种方法就是直接用一个64位的计数器来对时钟滴答进行计数。②第二种方法就是用一个32位计数器来对秒进行计数,同时还用一个32位的辅助计数器对时钟滴答计数,之子累积到一秒为止。因为232超过136年,因此这种方法直至22世纪都可以让系统工作得很好。③第三种方法也是按时钟滴答进行计数,但是是相对于系统启动以来的滴答次数,而
转载
发布博客 2011.10.29 ·
607 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

sprintf函数的用法

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参
转载
发布博客 2011.10.16 ·
710 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

error: unknown field ‘ioctl’ specified in initializer

异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序就根本不需要查询设备的状态,这一点非常类似于硬件上的“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟,在原理上一个进程接收到一个信号与处理器接收到一个中断请求是
转载
发布博客 2011.10.12 ·
9479 阅读 ·
0 点赞 ·
4 评论 ·
9 收藏

“asm/semaphore.h: No such file or directory”

今天编译发现一个error: “asm/semaphore.h: No such file or directory” ,发现2.6.19和2.6.31对这个信号量声明并不相同[patch] include linux/semaphore.h for kernel 2.6.2
转载
发布博客 2011.10.08 ·
4906 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

如何启用 Ubuntu 中的 root 帐号

sudo su -不就行了?
原创
发布博客 2011.10.04 ·
531 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux驱动学习笔记(2.3) scull模块 init_MUTEX被废除

一、今天在编译ldd3上的scullc的时候,出现如下错误:刚开始我以为没有包含头文件,然后我就去查2.6.39.1的源代码,结果在所有的符号中都没有发现init_MUTEX,后面在网站上发现了init_MUTEX的定义,如下所示:源码衔接:http://lx
转载
发布博客 2011.10.04 ·
3751 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

memset函数详解

memest原型 (please type "man memset" in your shell)  void *memset(void *s,  int c, size_t n); memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清
转载
发布博客 2011.10.02 ·
590 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

ARM的三种中断调试方法介绍

1 嵌入式软件开发流程   参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:执行文件的固化。   在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工
转载
发布博客 2011.09.26 ·
1004 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET

select函数:
        系统提供select函数来实现多路复用输入/输出模型。原型:
        #include sys/time.h>
        #include unistd.h>
        int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);
          参数maxfd是需要监视的最大的文件描
原创
发布博客 2011.05.30 ·
544 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

arm cpsr的c x s f 位


msr cpsr_cxsf,r1        ;这里的cxsf表示从低到高分别占用的4个8bit的数据域
指令中有时还有出现cpsr_cf, cpsr_all, cpsr_c等,这里:
        c 指 CPSR中的control field ( PSR[7:0])
        f 指 flag field (PSR[31:24])
        x 指 extend field (PSR[15:8])
        s 指 st
转载
发布博客 2011.04.06 ·
1273 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

bootloader与linux中位置无关代码的分析理解



首先,需要理解加载域与运行域的概念。加载域是代码存放的地址,运行域是代码运行时的地址。为什么会产生这2个概念?这2个概念的实质意义又是什么呢?
在一些场合,一些代码并不在储存这部分代码的地址上执行地址,比如说,放在norflash中的代码可能最终是放在RAM中运行,那么中norflash中的地址就是加载域,而在RAM中的地址就是运行域。
在汇编代码中我们常常会看到一些跳转指令,比如说b、bl等,这些指令后面是一个相对地址而不是绝对地址,比如说b main,这个指令
原创
发布博客 2011.03.01 ·
1643 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

C语言中Exit函数的使用



exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束
  return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..
  exit(1)表示进程正常退出. 返回 1;
  exit(0)表示进程非正常退出. 返回 0.
  进程环境与进程控制(1): 进程的开始与终止
原创
发布博客 2011.02.24 ·
43314 阅读 ·
15 点赞 ·
5 评论 ·
70 收藏

main函数的参数


C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程
序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用
的是有参函数,则参数在调用时传递。
main()
{
...
y1=f1(x1,x2);
...
}
f1(int a,int b)
{
....
Y2=f2(x3,x4);
....
原创
发布博客 2011.02.23 ·
685 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

main函数的参数


C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程
序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用
的是有参函数,则参数在调用时传递。
main()
{
...
y1=f1(x1,x2);
...
}
f1(int a,int b)
{
....
Y2=f2(x3,x4);
....
原创
发布博客 2011.02.23 ·
607 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解


如下:

unsigned long *mmu_tlb_base = (unsigned long *)0x30000000; 
如果执行mmu_tlb_base=mmu_tlb_base+1,会得到mmu_tlb_base为0x30000004的结果,对于指针的加减操作会将+1自动转换为+指针类型字节数 
(unsigned short *)mmu_tlb_base+1的结果是0x30000002 
(unsigned long)mmu_tlb
原创
发布博客 2011.01.21 ·
2089 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

堆栈的问题 SP指针


为什么将SP设为 4096 设定之后怎么运行?是从4096开始写然后再写4095还是往4097写?4096是steppingstone的地址吗?
中断为什么设为3072?
 
 
S3C2410、S3C2440有内部RAM、外部的SDRAM,这些都被称为内存;
SP设在内存上,可以是内部RAM,也可以是SDRAM,只要不破坏当前运行的程序就可以了。


启动时首先执行内部RAM的4096,然后将NAND的代码移到SD
原创
发布博客 2011.01.20 ·
2817 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

关于ARM9协处理器CP15及MCR和MRC指令



在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。
访问CP15寄存器的指令
MCR   ARM寄存器到协处理器寄存器的数据传送
MRC   协处理器寄存器到ARM寄存器的数据传送
MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未定义指令的异常中断。
MCR指令
MCR指令将ARM处理器
原创
发布博客 2011.01.18 ·
11772 阅读 ·
2 点赞 ·
0 评论 ·
20 收藏

深入理解SP、LR和PC



深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。
1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。
2、连接寄存器r14(LR):每种模式下r14都有自身版组,它有两个特殊功能。
原创
发布博客 2011.01.18 ·
45872 阅读 ·
16 点赞 ·
4 评论 ·
93 收藏

为什么adrl r2,mem_cfg_val这里不用ldr r2,=mem_cfg_val,


请教书中sdram裸机代码memsetup:
mov r1, #MEM_CTL_BASE
adrl r2,mem_cfg_val
add r3,  r1,#52
1:
ldr r4,  [r2],#4
str r4,  [r1],#4
cmp r1,r3
bne 1b
mov pc,lr
mem_cfg_val:
  .long 0x22011110
  .long 0x000
原创
发布博客 2011.01.17 ·
1919 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多