精华内容
下载资源
问答
  • 要求如题,本人对javascript不懂,从网上参考了许多类似的Emeditor宏文件,尝试自己编一个能够一次操作就可以作用与指定文件夹下的所有文件的宏。但是编写好以后运行,只能加载到一个文件中。比如要将指定文件夹下的...
  • 用惯了VS20XX,突然用这个有点心情复杂。... 接着选择【Add Tree】,将树状文件结构加载进来,选择之后点Close,这时候在界面上就能看到文件结构了 2、Project -> Rebuild Project 将各种定义啥的做个解析,...

    用惯了VS20XX,突然用这个有点心情复杂。。。

    1、怎样打开树状的文件目录

        首先需要新建工程,没有听错,你需要 project ->new project

        然后跟着指引改工程名 , FilePaths需要修改,改到我们需要打开的目录,选中之后点确定,再点OK

        接着选择【Add Tree】,将树状文件结构加载进来,选择之后点Close,这时候在界面上就能看到文件结构了

    2、Project -> Rebuild Project

        将各种宏定义啥的做个解析,符号啥的方便跳转

    展开全文
  • 修改文件日期VBA程序

    2006-03-16 00:00:00
    此工具是Excel97/2000中文版VBA程序。极力推荐给编程工作者。 它可以批量指定文件,并记录到当前工作表,可一次性修改这些文件的日期。...您也可以根据需要,转换为Excel97/2000加载宏程序。 -石化造价网-
  • 静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译下载内核,效率较低。动态加载利用了LINUX的module特性,可以在系统启动后用insmod命令把驱动程序(.o文件)添加上去,在不需要的时候用rmmod命令来...

    在LINUX下加载驱动程 序可以采用动态和静态两种方式。静态加载就是把驱动程序直接编译到内核里,系统启动后可以直接调用。静态加载的缺点是调试起来比较麻烦,每次修改一个地方 都要重新编译下载内核,效率较低。动态加载利用了LINUX的module特性,可以在系统启动后用insmod命令把驱动程序(.o文件)添加上去,在 不需要的时候用rmmod命令来卸载。在台式机上一般采用动态加载的方式。在嵌入式产品里可以先用动态加载的方式来调试,调试完毕后再编译到内核里。下面 以我们的nHD板卡为例讲述一下加载驱动程序的方法。

    假设我们需要添加一个名为mydrv的字符型设备驱动,主设备号为254,次设备号为0(只有一个从设备)。静态加载的步骤如下:

    1、编写自己的驱动程序源文件mydrv.c,并放在firmware/uClinux-Samsung-2500/linux-2.4.x/drivers/char下面。一个典型的字符型驱动的最后一般包括如下内容:
    static int mydrv_init(void)
    {
    int ret;
    ret = register_chrdev(mydrv_major, " mydrv ", &my_fops);
    if(ret == 0) printk("register_chrdev succeed!/n");
    else printk("register_chrdev fail!/n");
    return 0;
    }

    static __exit void mydrv _cleanup(void)
    {
    unregister_chrdev(mydrv _major, " mydrv ");
    printk("register_chrdev succeed!/n");
    return ;
    }
    module_init(mydrv _init);
    module_exit (mydrv _cleanup);
    函数mydrv_init的任务是注册设备,mydrv_cleanup的任务是取消注册。 Module_init和module_exit的作用后面会讲到。

    2.在firmware/uClinux-Samsung-2500/vendors/Samsung/2500/Makefile中添加如下语句(以刚才的设备为例,实际添加时当然要根据你自己的设备名称和设备号来添加):
    mknod $(ROMFSDIR) /dev/mydrv c 254 0
    这句话的目的是在内核中创建一个与你的驱动程序对应的设备节点。

    3.在firmware/uClinux-Samsung-2500/linux-2.4.x/drivers/char/Makefile
    中添加如下语句:
    obj-$(CONFIG_CHAR_MYDRV) +=mydrv.o
    这句话的目的是根据编译选项$(CONFIG_CHAR_MYDRV)来决定是否要添加该设备驱动。

    4.在firmware/uClinux-Samsung-2500/linux-2.4.x/drivers/char/config.in
    中添加:
    if [“$CONFIG_ARCH_SAMSUNG”=”y”]; then
    tristate ' ,MYDRV driver module ' CONFIG_CHAR_MYDRV
    这句话的目的是在运行make menuconfig时产生与你的设备对应的编译选项。

    5.运行make menuconfgi,应该能看到你自己的设备的选项,选中就可以了。

    6.编译内核,下载,运行自己的测试程序。

    如果你觉得上述步骤比较麻烦,可以把4、5两条都省去,把第3条中的
    obj-$(CONFIG_CHAR_MYDRV) +=mydrv.o
    改为
    obj-y +=mydrv.o
    这样在menuconfig就没有与你的设备对应的选项了,编译内核时直接会把你的驱动编译进去。

    还有一个问题需要说明一下。在…/drivers/char下有一个mem.c文件,其中最后有一个int __init chr_dev_init(void)函数。大家可以看到,所有字符设备的初始化函数(IDE_INT_init之类)都要添加在这里,而我们刚才的驱动 程序的初始化函数并没有添加到这里。这个问题涉及到系统启动时的do_initcall函数,详细讲述起来比较烦琐,大家有兴趣可以看一下《情景分析》下 册P726~P729。这里简单介绍一下。如果对一个函数(通常都是一些初始化函数)作如下处理(仍以我们的mydrv_init函数为例):
    __initcall(mydrv_init)
    那么在编译内核时会生成一个指向mydrv_init的函数指针__initcall_mydrv_int,系统启动时,在运行do_initcall函数时,会依次执行这些初始化函数,并且会在初始化结束后把这些函数所占用的内存释放掉。

    回到mem.c文件,在最后有一行:
    __initcall(chr_dev_init)
    这句话的作用就显而易见了,在系统启动时自动执行chr_dev_init函数。所以我们完全可以不用在mem.c/chr_dev_init中添加我们自己的初始化函数,而是在我们自己的设备文件中(mydrv.c)添加如下一行:
    __initcall(mydrv_init).

    在我们前面说到的我们自己的设备文件mydrv.c中,最后有一句:
    module_init(mydrv _init);
    大家可以看一下module_init的定义,在…linux.-2.4.x/include/linux/init.h中。如果定义了宏MODULE时,module_init是作为模块初始化函数,如果没有定义MODULE,则
    module_init(fn)就被定义为__initcall(fn)。静态编译时是不定义MODULE的,所以我们的驱动中的module_init就等于是:
    __initcall(mydrv_init).
    这样我们的初始化函数就会在启动时被执行了。

    至于究竟是在mem.c/chr_dev_init中添加你的设备初始化函数,还是在设备文件中通过module_init来完成,完全取决于你的 喜好,没有任何差别。如果你的初始化函数只是注册一个设备(没有申请内存等操作),那即使你在两个地方都加上(等于初始化了两次)也没关系,不会出错(有 兴趣可以看一下内核里注册设备的函数实现,
    …linux-2.4.x/fs/devices.c/register_chrdev)。不过为了规范起见,还是不建议这样作。

    最后一个问题。在静态加载驱动的时候,我们那个mydrv_cleanup和module_exit函数永远不会被执行,所以去掉是完全可以的,不过为了程序看起来结构清晰,也为了与动态加载的程序兼容,还是建议保留着。

    下面讲一下动态加载驱动的方法。
    1、运行make menuconfgi,在内核配置中进入Loadable module support,选择Enable loadable module support和Kernel module loader(NEW)两个选项。在应用程序配置中进入busybox,选择insmod, rmmod, lsmod三个选项。
    2、在…vendors/Samsung/2500/Makefile中添加相应的设备节点,方法与静态加载时完全一样。
    3、编写自己的驱动程序文件,在文件开始处加一句:
    #define MODULE
    文件最后的
    mydrv_init
    mydrv_cleanup
    module_init(mydrv _init)
    module_exit (mydrv _cleanup)
    这四项必须保留。
    4、仿照如下的格式写自己的Makefile文件:
    KERNELDIR= /home/hexf/hardware/nHD/Design/firmware/uClinux-Samsung-2500/linux-2.4.x
    CFLAGS = -D__KERNEL__ -I$(KERNELDIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fno-common -pipe -fno-builtin -D__linux__ -DNO_MM -mapcs-32 -mshort-load-bytes -msoft-float
    CC = arm-elf-gcc

    all: mydrv.o
    clean:
    rm -f *.o

    5、编译自己的驱动程序文件。注意在动态加载时只编译不连接,所以得到的是.o文件。

    6、把编译后的驱动程序的.o 文件,连同自己的测试程序(假设叫mytest,注意这个是可执行文件)一起放在编译服务器的/exports/自己的目录下。
    测试程序就是一个普通的应用程序,其编写和编译的步骤这里就不讲了。

    7、启动nHD板卡,用nfs的方法把编译服务器上/exports/自己的目录mount上来(假设mount 到 /mnt下)。Nfs的使用大家都很熟悉了,这里就不再说。

    8、
    cd /mnt
    /bin/insmod mydrv.o
    现在你的设备就已经被动态加载到系统里了。可以用lsmod命令查看当前已挂接的模块。
    9、运行你的测试程序
    10、调试完毕后用 rmmod mydrv把你的设备卸载掉。

    补充几点:
    1、关于建立设备节点的问题,因为大家所使用的系统不太一样,所以不需要按照我说的方法。总之只要在你自己的系统的dev目录下建立了自己的驱动程序的设备节点就可以了。
    2、没有考虑动态分配主设备号的问题。所以注册设备那个地方稍微有点不严密。
    3、模块加载时要把自己的.c文件编译成.o文件,CFLAGS后面那一串编译选项有时可能有点烦人,如果你没搞定,最简单的办法就是重新编译一遍内核并重定向到一个文件中(别忘了先make clean一下):make > out。

    然后在out文件里随便找一个字符驱动程序的编译过程,把它的编译选项找出来,拷贝到你自己的Makefile里就可以了。我就是这么作的。

    下面是一个最简单的字符设备驱动的例子。实际的驱动千差万别,但其实也就是
    “填充”自己的open,close,read,write,ioctl几个函数而已。

    #ifndef __KERNEL__
    #define __KERNEL__
    #endif
    #define MODULE
    #define drvtest_major 254

    #i nclude <linux/config.h>
    #i nclude <linux/module.h>

    #i nclude <linux/init.h>
    #i nclude <linux/sched.h>
    #i nclude <linux/kernel.h> // printk()
    #i nclude <linux/slab.h> // kmalloc()
    #i nclude <linux/errno.h> // error codes
    #i nclude <linux/types.h> // size_t
    #i nclude <linux/interrupt.h> // mark_bh
    #i nclude <linux/i2c.h>
    #i nclude <linux/skbuff.h>
    #i nclude <asm/segment.h>
    #i nclude <asm/uaccess.h>
    #i nclude <asm/irq.h>
    #i nclude <linux/wait.h>
    #i nclude <asm/arch/hardware.h>


    static int mytest_open(struct inode *inode,struct file *filp)
    {


    MOD_INC_USE_COUNT;

    printk("mytest open!/n");

    return 0;

    }

    static ssize_t mytest_read(struct file *flip,char * buff,size_t count,
    loff_t * f_pos)
    {
    char buf[10] ={0x1,0x2,0x3,0x4,0x5};

    memcpy(buff,buf,5);

    return 5;
    }

    static int mytest_close(struct inode *inode,struct file *filp)

    { MOD_DEC_USE_COUNT;

    printk("mytest close!/n");

    return 0;


    }

    static struct file_operations my_fops = {
    read: mytest_read,
    // write: mytest_write,
    open: mytest_open,
    release: mytest_close,
    // ioctl: mytest_ioctl,

    };

    static int mytest_init(void)

    {
    int ret;
    ret = register_chrdev(drvtest_major, "drvtest", &my_fops);

    if(ret == 0) printk("register_chrdev succeed!/n");
    else printk("register_chrdev fail!/n");
    return 0;

    }

    static __exit void mytest_cleanup(void)
    {

    unregister_chrdev(drvtest_major, "drvtest");
    printk("register_chrdev succeed!/n");
    printk("bye!/n");

    return ;
    }
    module_init(mytest_init);
    module_exit(mytest_cleanup);

     

    转至 :http://203.208.37.132/search?q=cache:Om3Dp1upmp4J:www.blogercn.com/user1/1590/archives/2006/156695.shtml+__initcall&cd=11&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy28qC9hVYK1pSWb82C2wV1PnFifcfg

    展开全文
  • word的问题

    2012-09-18 13:27:00
    win7下修改方法:文件--选项--加载项--COM加载并转到,然后把三个勾去掉确定OK(有时候有道词典也会加一栏,相应的去掉) win8下修改方法就用通用的吧:添加或删除office 2010,office共享里添加VBA工程的数字证书...

    microsoft office 2010如果只安装了word,ppt,excel这三类,会出现宏错误的问题

    win7下修改方法:文件--选项--加载项--COM加载并转到,然后把三个勾去掉确定OK(有时候有道词典也会加一栏,相应的去掉)

    win8下修改方法就用通用的吧:添加或删除office 2010,office共享里添加VBA工程的数字证书以及Visual Basic for Applications就OK啦~

    转载于:https://www.cnblogs.com/louzhang/archive/2012/09/18/2690409.html

    展开全文
  • (注:此导出的excel是通过模板demo.xls导出的,模板写了一个求和,执行:打开导出的excel文件打开 工具---执行(求和);即可看到total处显示求和结果,实现求和统计) 2.导入: 点击按钮浏览后, 点按钮...
  • 遇到这种情况后,通过 dmesg 看一下内核日志。 如果发现有如下日志,那就好办了。 hello: version magic '2.6.33.3 ' ...修改内核源码文件include/linux/vermagic.h 把如下 VERMAGIC_STRING 的定义删掉 ...

    遇到这种情况后,通过 dmesg 看一下内核日志。

    如果发现有如下日志,那就好办了。

    hello: version magic '2.6.33.3 ' should be '2.6.33.3-85.fc13.i686.PAE SMP mod_unload 686 '

    修改内核源码文件include/linux/vermagic.h

    把如下 VERMAGIC_STRING 宏的定义删掉

    #define VERMAGIC_STRING \ 
    UTS_RELEASE " "\ 
    MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \ 
    MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS\ 
    MODULE_ARCH_VERMAGIC

    然后,从新定义一个VERMAGIC_STRING宏

    #define VERMAGIC_STRING  "should be '2.6.33.3-85.fc13.i686.PAE SMP mod_unload 686 "

    注意,双引号中的内容,要与dmesg输出的日志中should be后面的单引号中的内容,完全相同,别漏掉了那个空格哦。

    好了,现在重新编译一下你的模块,再加载一次吧。

    基本上应该会OK啦。

    需要指出的是,这种方法很不正规。

    如果你只是急于开发验证模块,不想重新编译安装新内核,可以临时使用一下。

    而且,用的时候,也要注意一下,模块编译所用的内核版本与实际运行的内核版本,

    大体上也要比较接近才行。否则可能会出问题的。

    如果是正式的产品,请务必保证,模块是基于实际运行的内核编译出来的。


    好了,问题解决了,下面再闲说几句模块的加载。

    实际上,Linux下模块的加载,是通过系统调用sys_init_module完成的。

    对于2.6的内核,sys_init_module的代码在kernel/module.c中

    sys_init_module调用load_module,load_module则检查模块的 vermagic 是否与内核的一样。

    modmagic = get_modinfo(sechdrs, infoindex, "vermagic");
    /* This is allowed: modprobe --force will invalidate it. */
    if (!modmagic) {
    tainted |= TAINT_FORCED_MODULE;
    printk(KERN_WARNING "%s: no version magic, tainting kernel.\n",
          mod->name);
    } else if (!same_magic(modmagic,vermagic)) {
    printk(KERN_ERR "%s: version magic '%s' should be '%s'\n",
          mod->name, modmagic, vermagic);
    err = -ENOEXEC;
    goto free_hdr;
    }

    vermagic是内核中保存的magic,其定义如下。可见他的值也就来自于我们上面定义的宏。

    static const char vermagic[] = VERMAGIC_STRING;

    除了检查vermagic,load_module还会检查模块的许可证的兼容性,

    具体调用链是:load_module->set_license->license_is_gpl_compatible

    从下面license_is_gpl_compatible的代码,可以看出内核支持的许可证类型。

    static inline int license_is_gpl_compatible(const char *license)
    {
            return (strcmp(license, "GPL") == 0
                    || strcmp(license, "GPL v2") == 0
                    || strcmp(license, "GPL and additional rights") == 0
                    || strcmp(license, "Dual BSD/GPL") == 0
                    || strcmp(license, "Dual MIT/GPL") == 0
                    || strcmp(license, "Dual MPL/GPL") == 0);
    }

    因此,我们的模块代码中MODULE_LICENSE("Dual MIT/GPL")这一项,也要注意符合license_is_gpl_compatible中的要求才行。否则的话,加载模块时,可能又要看到如下的告警了 :)

    hello: module license  'xxx'  taints kernel.

     

     

    展开全文
  • 采用SecureCRT调试工具,发送boot.bin文件,将接下来发送的用户程序加载到nand flash中,并从nand flash中读取程序,我用IAR打开官方boot文件,添加工程能够实现编译并生成bin文件,现在想问如何修改boot,实现上述...
  • 文件展开到trac主目录下的plugins目录下,默认主目录是/data/KB, 如果是其他目录则可能需要修改 将其他js文件放到 trac安装目录下,比如: /usr/lib/python2.7/site-packages/trac 使用,将照片作为附件传到某...
  • UltraEdit修改

    2013-10-28 21:24:03
    -全面的支持,包括保存和加载 -上下文相关帮助 -在原文件目录内自动备份生成的文件,扩展名为(.BAK) -UltraEdit 在每次使用时均保持其屏幕位置 -行和列号显示(可禁用行号的显示) -用鼠标右键...
  • a5d27 emmc启动 修改1

    千次阅读 2016-06-20 14:32:03
    只需要修改board/sama5d2_xplained文件即可 修改CONFIG_SDHC* = y 这个定义在board/sama5d2_xplained.c中的void at91_sdhc_hw_init(void)函数实现 从上面代码可以看出第1级的bootloader只支持
  • 当把一个VS工程从一个磁盘中复制到另一个磁盘后,启动调试后加载的还是以前路径下的符号.dll .exe等文件。 有时你的解决方案中包含了很多的项目,项目之间有依赖调用。 此时,注意你解决方案中的启动项目是什么,...
  • │ │ ├─Office 2002 简繁转换加载宏 │ │ │ tcscconv.exe │ │ │ │ │ └─Office 2003 简繁转换加载宏 │ │ tcscconv.msi │ │ │ ├─第4章-操作工作表 │ │ 技巧29 快速填充所有空白单元格....
  • 最简单的启动和运行方法是修改Config.groovy以适合您的环境,然后将主脚本加载到groovyConsole中。 然后,您需要从输出一些HTML( 可能是一个很好的起点, 甚至更好:-)。 请注意,该脚本完全假设了Asciidoctor输出...
  • 3.2.6 doskey——命令行 102 3.2.7 exit——退出命令行 103 3.3 显示系统信息 103 3.3.1 driverquery——查看设备驱动程序 103 3.3.2 help——帮助 105 3.3.3 systeminfo——系统信息 105 3.3.4 ver——系统版本 ...
  • xWorks下的硬盘启动方法

    千次阅读 2014-02-28 14:48:54
    1 在VxWorks下进行开发调试,在目标机上... 第一步,修改config.h文件,在config.h文件里包括硬盘驱动。 #define INCLUDE_ATA /* 包括IDE/EIDE(ATA) 硬盘驱动 */ 修改#define DEFAULT_BOOT_LINE(引导行)定义。
  • 一、imread ...2.第一个参数是图像文件名称(路径),第二个参数参数表示加载的图像是什么类型(以下三个); 无参就是>1; : IMREAD_UNCHANGED(<0) ,表示加载原图,不做改变; IMREA...
  • 在加载文件的时候,之前目录头使用的是 "file:///" 后来改为了"file://" 解决问题,有些人说是主要修改加载ab包的地方即可,我反正全项目搜索,把所有"file:///"的地方都改了。通过一些定义或者平台判断只改ios的...
  • 一份白皮书,介绍了使用 VB 代码(在示例 ... 然后编辑 PowerPoint 中的任何对象以修改其操作设置,选择运行,转向正确的,然后您就可以启动并运行了。 还包括从单一来源的 *.BAS 文档管理演示、代码等的技巧。
  • EXCEL通用智能查询

    2013-10-27 10:19:21
    公司的物料资料不规范,使用的名称经常花样百出,一直想做一个不依附于特定文件的查询工具。以前的查询都是借用别人的...这个加载宏的好处在于不依附于特定文件,只要是电子表表格,都可以进行使用。代码文件是分离的。
  • nmon analyser v33e3

    2014-07-03 10:42:46
    2、 调整excel安全性:工具--安全性 (修改安全级别与可靠发行商) (选择)安全级别:低 (勾上)信任所有安装的加载项和模板 (勾上)信任对于“Visual Baisc项目”的访问 3、 修改完后,确定-关闭nmon ...
  • Burp Suite的自定义参数处理程序扩展:一种强大的工具,即使在使用的情况下,也可以以外科手术的精确度修改HTTP消息。 快速保存和快速加载功能不仅通过重新加载扩展包,而且还可以重新加载Burp Suite来保持。 每个...
  • · 把被称为的缩写语句转换为原始语句 可重定位: · 在内存中存放的起始位置L不是固定的 链接器 · 将多个可重定位的机器代码文件(包括库文件)连接到一起 · 解决外部内存地址问题(引用外部文件的内容造成的...
  • 修改ExtractDataFromWiktionary.nim以指向您的XML文件(当前已为我的设置编码) 编译ExtractDataFromWiktionary.nim使用nim c --opt:speed src/ExtractDataFromWiktionary.nim 运行它以获取out.json文件 将该out....
  • linux内核模块开发笔记一

    千次阅读 2015-11-03 17:50:46
    如果将所有的组件都编译进内核,会造成内核文件过大,修改组件后,需要重新编译整个内核,效率比较低。内核模块就相当于补丁,在需要的时候才会起作用,模块本身不被编译进内核文件,在运行期间动态的添加和卸载。 ...
  • 生物信息学相关

    2019-07-04 09:52:40
    手把手教你生信分析平台搭建 你想要的基因组-微生物组知识全在这(1907) virtualbox安装增强功能时【未能加载虚拟光盘】 ...vim如何修改只读文件 Ubuntu gedit出错:Failed to connect to the ...
  • 认识FANUC工业机器人,机器人的构成、TP示教控制器、编程技巧、程序创建修改、I/O控制、指令、焊接程序结构、坐标系设置、程序指令、文件的备份与加载、Mastering(原点复归)、基本保养、主板及机器人本体电池...
  • 预处理器可以删除注释、包含其他文件以及执行macro是一段重复文字的简短描写)替代。 3、经过编译器,得到汇编文本.s 4、经过汇编器,得到可重定位目标程序,二进制文件.o 5、经过链接器,如printf.o加入,...
  • 1.1 什么是编译 将高级语言(源语言)翻译成汇编...加载器:修改可重定位地址;将修改后的指令和数据放到内存中适当的位置 链接器:将多个可重定位的机器代码文件(包括库文件)连接到一起;解决外部内存地址问题 ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 223
精华内容 89
关键字:

修改加载宏文件