Giter Club home page Giter Club logo

bitthunder's Introduction

BitThunder

Build status

A Reliable Real-Time Operating System & Application Framework

(c) 2012-2014 James Walmsley [email protected]

Currently released under GNU GPL version 2.0 See LICENSE for more information.

Directory Tree

.dbuild                 - Dark Builder build system. (BitThunder edition).
arch                    - Contains architecture specific code & bootstrapping for the OS.
+ $(ARCH)               - Contains common architecture components, e.g. NVIC/GIC drivers for ARM.
  + mach/$(SUBARCH)     - Machine sub-architectures, e.g. zynq, or cortex-m3/stm32 etc etc.
doc                     - Documentation...
drivers                 - Architecture independent drivers, e.g. I2C/USB/PCIe devices etc.
kernel                  - Contains the RTOS scheduler (FreeRTOS).
lib                     - Contains all BitThunder library code, i.e. the stuff not implementing the OS. Useful structures etc.
os                      - Contains all of the BitThunder platform independent OS code.

Development Process

From now on the master branch is locked into a stable development cycle. All work must be carried out on feature branches in the form:

feature/{username|shortcode}[.branchname]

Feature branches may only enter the master branch through a rebase, to keep the project history linear, during which the commit history of the feature branch should be cleaned up (or squashed if appropriate).

In order for a feature branch to be accepted into the master, it must:

  • Easily rebase onto the latest master with no conflicts.
  • Cleanly compile -- NO ERRORS, NO WARNINGS, output should be "pretty".
  • PASS all unit tests (when we have a test system in place!).

In order to initiate the merging process, you must make a merge request. This is easily done on GitHUB using the pull request feature. For those working with me on GitLab, simply make a merge request.

Merges are made with a --no-ff merge so that all commits pertaining to a feature can be easily identified.

It MUST be possible to build the kernel using a sensible configuration from any merge-point on the master branch.

Stable Master Branch

As a consequence the master branch should remain relatively stable. By stable, it is meant that the build process is not broken, and that a kernel image can be generated without much effort.

Even though the master branch can be considered stable in this respect, if you really need a stable kernel, then you should use the last marked stable tag, e.g:

stable-v1.0.0

Getting Started

With BitThunder its easy to get a standalone kernel up and running.

make menuconfig
make

Project

You can create 3 types of BitThunder project.

  • A standalone bitthunder kernel, usually calls an initscript on the filesystem.
  • An out-of-tree project.
  • A GIT managed out-of-tree project, which pulls BitThunder as a submodule.

Standalone Kernel's

These are simple:

make menuconfig
make

Out-of-tree Projects

mkdir myproject    # Create a directory for managing and building the new project.
cd myproject

# The next command creates an empty project with reference to the base kernel sources.
make -C ../bitthunder/ PROJECT_DIR=$(pwd) project.init
make menuconfig
make

GIT Managaed Projects

mkdir myproject.git
cd myproject.git
make -C ../bitthunder/ PROJECT_DIR=$(pwd) project.git.init
make menuconfig
make

Project Files

All projects create the following files:

$(PROJECT_DIR)/Makefile
$(PROJECT_DIR)/Kconfig
$(PROJECT_DIR)/objects.mk
$(PROJECT_DIR)/main.c

After configuration the following files will be generated:

$(PROJECT_DIR)/include/bt_bsp_config.h
$(PROJECT_DIR)/.config

Makefile

The project Makefile configures a pair of variables and includes the kernel Makefile.

PROJECT_DIR    - Is the directory in which the project exists. (Use $(shell pwd)).
PROJECT_CONFIG - y (default) causes the config system to include $(PROJECT_DIR)/Kconfig.

objects.mk

In a project, the objects.mk file lists the project objects that need to be additionally built and linked into the kernel.

To add a file to the build process you simply add a line to the objects.mk file:

objs += $(APP)/main.o
objs += $(APP)/path/to/my/object.o
include $(PROJECT_DIR)/path/to/module/objects.mk

Note you may also use configuration options (as defined in your Kconfig file) to optionally compile objects:

objs-$(BT_CONFIG_FEATURE_A_SUPPORT) += $(APP)/feature_a.o

Note $(APP) is essentially the path to $(PROJECT_DIR), but must be used to create the correct Makefile targets. It should also be noted that application objects.mk files use a slightly different convention.

Kconfig

Its possible for a project to hook into the Kernel configuration system. Simply add any configuration options to this file, and they will appear under "Project Options" on the menuconfig system.

Note: PROJECT_CONFIG=y must be set in the project Makefile ($(PROJECT_DIR)/Makefile).

main.c

To begin with this file is blank. Booting the BitThunder kernel by default will cause it to only print

Welcome to BitThunder

repeatedly on the boot-logger device (boot console).

To override this behaviour, you simply need to create a function called main().

Build System

BitThunder uses a GNU Make based build system called dbuild. (Dark Builder). The core of the build-system is found under:

$(BASE)/.dbuild/

PATH conventions.

All path variables in dbuild must have a trailing slash appended (for consistency and readability).

$(BASE)/		- Root folder of the BitThunder kernel.
$(PROJECT_DIR)/	- Root of the project based on BitThunder being developed.
$(BUILD_DIR)/   - Path where all objects and dependency files will be generated.

The convention was recently changed so that all variables are consistent. You can use some sed rules to update old projects easily:

find . -name "objects.mk" | xargs sed -i 's:$(BASE):$(BASE)/:g'
find . -name "objects.mk" | xargs sed -i 's:$(PROJECT_DIR):$(PROJECT_DIR)/:g'
find . -name "objects.mk" | xargs sed -i 's:$(BUILD_DIR):$(BUILD_DIR)/:g'

Variables

$(ARCH)     - The architecture variant used. e.g. arm/blackfin/mips.
$(SUBARCH)  - The machine variant used. e.g. zynq.

These are used in paths of object files etc.

Kernel Development

objects.mk files

The build system specifies all objects to be built in the objects.mk files. Adding a new object is simple:

OBJECTS += $(BUILD_DIR)/arch/arm/mach/zynq/myobject.o

You can also use configuration variables like:

OBJECTS-$(BT_CONFIG_FEATURE_A) += $(BUILD_DIR)/feature_a/feature_a.o

To include another folder in the build system:

include $(BASE)/drivers/net/objects.mk

You can include other folders based on configuration variables like:

ifeq($(BT_CONFIG_FEATURE_A),y)
    include $(BASE)/feature_a/objects.mk
endif

bitthunder's People

Contributors

cliffordwolf avatar jameswalmsley avatar riegl-af avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitthunder's Issues

Quickstart for bitthunder and the pi

Hey, I've just worked out how to run bitthunder on the pi, but the existing docs are a little out of date.

I've documented how I did it here.

If you want I can go and edit the bitthunder docs to update them, or you can link straight to that blog post.

p.s. thanks for making bitthunder.

Does Bitthunder work on RPi 3?

I have a couple of objectives:

  1. Learn how to use FreeRTOS, because I've seen it as a requirement in a few embedded systems development job descriptions.
  2. Learn how to use multiple processor cores. Mainly for my own curiosity, but I've also seen this as a job requirement.
    I bought a Raspberry Pi 3 since it has 4 cores and higher performance than RPi2, and I have Raspbian Linux running on it no problem. Now I'm trying to figure out how to get FreeRTOS running on the RPi3. Searching for FreeRTOS Raspberry Pi leads indirectly here. Bitthunder seems to be the most advanced use of FreeRTOS on RPi. So I'm hoping the people here can tell me: Is there support (anywhere) for using multiple cores with FreeRTOS (or some other free RTOS) on RPi3?

Build issue

Hi, I have cloned bitthunder. I am trying to build it for RPi3 B.
I am getting following build issue after issue make menuconfig.
cd /media/ubuntu/linux/RP3/bitthunder/ && TERM=xterm-color CONFIG_=BT_CONFIG_ PROJECT_DIR=/media/ubuntu/linux/RP3/bitthunder /media/ubuntu/linux/RP3/bitthunder/scripts/kconfig-linux64/kconfig-mconf Kconfig
Kconfig:8:warning: environment variable PROJECT_CONFIG undefined
Error opening terminal: xterm-color.
make: *** [menuconfig] Error 1

Can you please tell me if I am missing anything?

Interrupts on bitthunder

I am a hardware engineer and have developed a Raspberry Pi Hat-ish board for Quad copters, rockets and RC airplanes. I have tested it using Raspian but need a real time operating system. bitthunder look appealing but I don't see an example using external interrupts. Are they supported? Are there restriction on which GPIO? Have you tried it on a Raspberry Pi Zero? Thanks for any help.
See: https://github.com/robertrau/piflySetupScript
and: http://rau-deaver.org/Project_PiFly.html
I am revising the layout now and want to make sure I can be bitthunder compatible.

[BUILD] Easy build from scratch.

There are a number of on going issues blocking the quick and simple building of a default configuration.

  • Kconfig system must be installed - auto-build in project.. binaries for Windows.
  • make menuconfig doesn't work on first try, must save and run a second time.
  • Easy and automatic out-of-tree project creation.
    -- This should either reference the source kernel, or pull in a submodule (default).

OSX Build

Build currently fails on OSX (for Raspberry Pi original model B) - would love to help fix this:

macusers-MBP-5:bitthunder adrian$ make V=3 menuconfig
cd /Users/adrian/bitthunder/ && CONFIG_=BT_CONFIG_ PROJECT_DIR=/Users/adrian/bitthunder kconfig-mconf Kconfig
Kconfig:8:warning: environment variable PROJECT_CONFIG undefined

configuration written to .config

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

/Library/Developer/CommandLineTools/usr/bin/make mkconfig
set -e; set -o pipefail; gcc -MD -MP -I /Users/adrian/bitthunder/os/include/ -I /Users/adrian/bitthunder/arch//include/ -I /Users/adrian/bitthunder/drivers/ -I /Users/adrian/bitthunder/arch//include/arch/common/ -I /Users/adrian/bitthunder -DBT_CONFIG_OS -I /Users/adrian/bitthunder/scripts/dtc/libfdt/ -c /Users/adrian/bitthunder/.dbuild/../.dbuild/scripts/mkconfig/mkconfig.c -o /Users/adrian/bitthunder/.dbuild/../.dbuild/scripts/mkconfig/mkconfig.o
set -e; set -o pipefail; g++ /Users/adrian/bitthunder/.dbuild/../.dbuild/scripts/mkconfig/mkconfig.o -o /Users/adrian/bitthunder/.dbuild/../.dbuild/scripts/mkconfig/mkconfig
Undefined symbols for architecture x86_64:
"_generate_definitions", referenced from:
_main in mkconfig.o
"_line", referenced from:
_getfilepath in mkconfig.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [/Users/adrian/bitthunder/.dbuild/../.dbuild/scripts/mkconfig/mkconfig] Error 1
make: *** [menuconfig] Error 2

Compile error when kernel image was compiled

Hello, I am trying to compile bitthunder.. But I got some error.

I have done the process before "make". After I commanded make, I got this error..

/home/jungtaek/workspace/bitthunder/build/arch/arm/common/crtinit.o: In function _start': (.text+0x10): multiple definition of_start'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../arm-none-eabi/lib/crt0.o:/build/buildd/newlib-2.1.0/build/arm-none-eabi/libgloss/arm/../../../../libgloss/arm/crt0.S:173: first defined here
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../arm-none-eabi/lib/crt0.o: In function _start': (.text+0xf8): undefined reference tobss_start'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../arm-none-eabi/lib/crt0.o: In function _start': (.text+0xfc): undefined reference tobss_end'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function exit': /build/buildd/newlib-2.1.0/build/arm-none-eabi/newlib/libc/stdlib/../../../../../newlib/libc/stdlib/exit.c:70: undefined reference to_exit'
collect2: error: ld returned 1 exit status
make: *** [/home/jungtaek/workspace/bitthunder/vmthunder.elf] Error 1

Can you give some advices?
Actually, I am confused because of the above paths such as buildd, newlib-2.1.0 and etc.

Thank you for reading.

Raspberry Pi undeclared 'BT_CONFIG_MACH_BCM2835_SYSCLOCK_FREQ'

Following the steps from http://blog.richardweiss.org/2015/06/27/raspberry-pi-bitthunder.html

The first steps go well, but when executing make the follwoing error happens:

make
 Dark Builder
 Version (1.6.0 - BiCEP2 (Gravitational Waves))
  [CONF]   [BitThunder]      /home/nero/repos/pithunder/include/bt_bsp_config.h
  [CC]     [FreeRTOS]        kernel/bt_freertos_if.o
  [CC]     [FreeRTOS]        kernel/FreeRTOS/Source/croutine.o
  [CC]     [FreeRTOS]        kernel/FreeRTOS/Source/list.o
  [CC]     [FreeRTOS]        kernel/FreeRTOS/Source/queue.o
  [CC]     [FreeRTOS]        kernel/FreeRTOS/Source/tasks.o
  [CC]     [FreeRTOS]        kernel/FreeRTOS/Source/event_groups.o
  [CC]     [HAL]             arch/arm/mach/bcm2835/bcm2835.o
/home/nero/repos/pithunder/../bitthunder/arch/arm/mach/bcm2835/bcm2835.c: In function 'bcm2835_get_cpu_frequency':
/home/nero/repos/pithunder/../bitthunder/arch/arm/mach/bcm2835/bcm2835.c:89:9: error: 'BT_CONFIG_MACH_BCM2835_SYSCLOCK_FREQ' undeclared (first use in this function)
  return BT_CONFIG_MACH_BCM2835_SYSCLOCK_FREQ;
         ^
/home/nero/repos/pithunder/../bitthunder/arch/arm/mach/bcm2835/bcm2835.c:89:9: note: each undeclared identifier is reported only once for each function it appears in
/home/nero/repos/pithunder/../bitthunder/.dbuild/../.dbuild/c-objects.mk:41: recipe for target '/home/nero/repos/pithunder/build/arch/arm/mach/bcm2835/bcm2835.o' failed
make: *** [/home/nero/repos/pithunder/build/arch/arm/mach/bcm2835/bcm2835.o] Error 1

When manually setting the frequency the following error happens:

make
 Dark Builder
 Version (1.6.0 - BiCEP2 (Gravitational Waves))
  [CC]     [HAL]             arch/arm/mach/bcm2835/bcm2835.o
  [CC]     [HAL]             arch/arm/mach/bcm2835/irq_chip.o
/home/nero/repos/pithunder/../bitthunder/arch/arm/mach/bcm2835/irq_chip.c:22:45: error: 'BT_CONFIG_MACH_BCM2835_TOTAL_IRQ' undeclared here (not in a function)
 static BT_INTERRUPT_VECTOR   g_oVectorTable[BT_CONFIG_MACH_BCM2835_TOTAL_IRQ];

[CONSOLE] Console / UART manager

Currently serial output is very primitive. It would be nice if there was a decent console manager allowing stream devices (those implementing read/write FILE methods) could be registered with an actual console manager that would read/write on a low-priority thread.

Ubuntu 15.04 build fail

I have clone repo using git clone and run make menuconfig
Following error found on screen


No .config file found, run make menuconfig

*** kconfig-frontends is not installed

No .config file found, run make menuconfig

Source code: https://github.com/jameswalmsley/kconfig-frontends (supported)
Source code: http://ymorin.is-a-geek.org/projects/kconfig-frontends (original)
MAC OSX : brew tap PX4/homebrew-px4
MAC OSX : brew update
MAC OSX : brew install kconfig-frontends
/home/punit/bitthunder/.dbuild/dbuild.mk:174: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 1

[KERNEL] Tighten integration with FreeRTOS

Its now absolutely clear the BitThunder will remain tightly coupled with the excellent FreeRTOS project. Therefore it makes perfect sense to remove the kernel abstraction layer completely, and reduce the small overhead that causes.

USB stack -Raspberrypi BitThunder

Is it possible to get the USB stack working on Raspberry pi running BitThunder . I want to connect a USB stick and be able to read and write data to it ?
How should I proceed ? What all I need to take care during build for the same.

-yogk

[ERROR] Error codes need to be defined properly.

Redefine error codes, and update all kernel code to use them correctly.
The error codes should map easily to the POSIX errors as much as possible.

Allow line/module codes to determine where Error originates from.

error: 'bt_kernel_params' has no member named 'init_group'

I followed the same instructions given in
http://blog.richardweiss.org/2015/06/27/raspberry-pi-bitthunder.html
and
http://bitthunder.org/docs/quick-start/

When I try to make after saving the config file, I have the following error. Could you please tell me how to solve it

/*
/home/adithya/myproject/../bitthunder/os/src/bt_main.c: In function 'bt_main':
/home/adithya/myproject/../bitthunder/os/src/bt_main.c:189:17: error: 'bt_kernel_params' has no member named 'init_group'
g_kernel_params.init_group = BT_kEventGroupCreate();
^
/home/adithya/myproject/../bitthunder/.dbuild/../.dbuild/c-objects.mk:41: recipe for target '/home/adithya/myproject/build/os/src/bt_main.o' failed
make: *** [/home/adithya/myproject/build/os/src/bt_main.o] Error 1
*/

How to get kconfig-mconf?

How do you get kconfig-mconf?

Here's what I tried...

mikes@ubuntu ~/james-walmsley-kconfig-frontends $ git clone https://github.com/jameswalmsley/kconfig-frontends.git
Cloning into 'kconfig-frontends'...
remote: Counting objects: 1171, done.
remote: Compressing objects: 100% (485/485), done.
remote: Total 1171 (delta 675), reused 1168 (delta 674)
Receiving objects: 100% (1171/1171), 608.66 KiB, done.
Resolving deltas: 100% (675/675), done.
mikes@ubuntu ~/james-walmsley-kconfig-frontends $ ./bootstrap
bash: ./bootstrap: No such file or directory
mikes@ubuntu ~/james-walmsley-kconfig-frontends $ cd kconfig-frontends/
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ ls
AUTHORS  bootstrap  configure.ac  COPYING  docs  frontends  INSTALL  libs  Makefile.am  README  scripts  utils
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ ./bootstrap
Creating macrodir...
Running autoreconf...
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `scripts/.autostuff/scripts'.
libtoolize: copying file `scripts/.autostuff/scripts/config.guess'
libtoolize: copying file `scripts/.autostuff/scripts/config.sub'
libtoolize: copying file `scripts/.autostuff/scripts/install-sh'
libtoolize: copying file `scripts/.autostuff/scripts/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `scripts/.autostuff/m4'.
libtoolize: copying file `scripts/.autostuff/m4/libtool.m4'
libtoolize: copying file `scripts/.autostuff/m4/ltoptions.m4'
libtoolize: copying file `scripts/.autostuff/m4/ltsugar.m4'
libtoolize: copying file `scripts/.autostuff/m4/ltversion.m4'
libtoolize: copying file `scripts/.autostuff/m4/lt~obsolete.m4'
configure.ac:50: installing `scripts/.autostuff/scripts/ar-lib'
configure.ac:209: installing `scripts/.autostuff/scripts/compile'
configure.ac:31: installing `scripts/.autostuff/scripts/missing'
frontends/conf/Makefile.am: installing `scripts/.autostuff/scripts/depcomp'
libs/parser/Makefile.am:45: user target `.l.c' defined here...
/usr/share/automake-1.11/am/lex.am: ... overrides Automake target `.l.c' defined here
configure.ac: installing `scripts/.autostuff/scripts/ylwrap'
Done. You may now run:
    ./configure
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert i686-pc-linux-gnu file names to i686-pc-linux-gnu format... func_convert_file_noop
checking how to convert i686-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking whether gcc and cc understand -c and -o together... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for inline... inline
checking whether make sets $(MAKE)... (cached) yes
checking for gperf... gperf
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking for bison... bison -y
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking whether gettext is declared... yes
checking for library containing gettext... none required
checking ncursesw/curses.h usability... no
checking ncursesw/curses.h presence... no
checking for ncursesw/curses.h... no
checking ncurses/ncurses.h usability... no
checking ncurses/ncurses.h presence... no
checking for ncurses/ncurses.h... no
checking ncurses/curses.h usability... no
checking ncurses/curses.h presence... no
checking for ncurses/curses.h... no
checking ncurses.h usability... no
checking ncurses.h presence... no
checking for ncurses.h... no
checking curses.h usability... no
checking curses.h presence... no
checking for curses.h... no
checking for library containing initscr... no
checking for library containing setupterm... no
checking for library containing new_panel... no
checking for library containing menu_init... no
checking for gtk... no
checking for qt4... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating libs/Makefile
config.status: creating libs/images/Makefile
config.status: creating libs/lxdialog/Makefile
config.status: creating libs/parser/Makefile
config.status: creating frontends/Makefile
config.status: creating frontends/conf/Makefile
config.status: creating frontends/mconf/Makefile
config.status: creating frontends/nconf/Makefile
config.status: creating frontends/gconf/Makefile
config.status: creating frontends/qconf/Makefile
config.status: creating utils/Makefile
config.status: creating scripts/Makefile
config.status: creating scripts/.autostuff/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: 
configure: Configured with:
configure: - parser library     : shared (version: 3.10.0)
configure:   - root-menu prompt : Configuration
configure:   - config prefix    : CONFIG_
configure: - frontends          : conf
configure:   - transform name   : s&^&kconfig-&
configure:   - localised        : yes
configure: - install utilities  : yes
configure: - CFLAGS CXXFLAGS    : -Wall -Werror
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ make
Making all in docs
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/docs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/docs'
Making all in libs
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
Making all in parser
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
gperf -t --output-file hconf.c -a -C -E -g -k 1,3,$ -p -t hconf.gperf
flex -L -P zconf  -olconf.c lconf.l
make  all-am
make[3]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
/bin/bash ../../scripts/.autostuff/scripts/ylwrap yconf.y y.tab.c yconf.c y.tab.h yconf.h y.output yconf.output -- bison -y -t -l -p zconf 
/bin/bash ../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../scripts/.autostuff  -DROOTMENU="\"Configuration\"" -DCONFIG_=\"CONFIG_\"    -Wall -Werror -g -O2 -MT libkconfig_parser_la-yconf.lo -MD -MP -MF .deps/libkconfig_parser_la-yconf.Tpo -c -o libkconfig_parser_la-yconf.lo `test -f 'yconf.c' || echo './'`yconf.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../scripts/.autostuff -DROOTMENU=\"Configuration\" -DCONFIG_=\"CONFIG_\" -Wall -Werror -g -O2 -MT libkconfig_parser_la-yconf.lo -MD -MP -MF .deps/libkconfig_parser_la-yconf.Tpo -c yconf.c  -fPIC -DPIC -o .libs/libkconfig_parser_la-yconf.o
mv -f .deps/libkconfig_parser_la-yconf.Tpo .deps/libkconfig_parser_la-yconf.Plo
/bin/bash ../../libtool  --tag=CC   --mode=link gcc  -Wall -Werror -g -O2 -release 3.10.0 -no-undefined  -o libkconfig-parser.la -rpath /usr/local/lib libkconfig_parser_la-yconf.lo  
libtool: link: gcc -shared  -fPIC -DPIC  .libs/libkconfig_parser_la-yconf.o    -O2   -Wl,-soname -Wl,libkconfig-parser-3.10.0.so -o .libs/libkconfig-parser-3.10.0.so
libtool: link: (cd ".libs" && rm -f "libkconfig-parser.so" && ln -s "libkconfig-parser-3.10.0.so" "libkconfig-parser.so")
libtool: link: ( cd ".libs" && rm -f "libkconfig-parser.la" && ln -s "../libkconfig-parser.la" "libkconfig-parser.la" )
make[3]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
Making all in frontends
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
Making all in conf
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends/conf'
gcc -DHAVE_CONFIG_H -I. -I../../scripts/.autostuff    -I../../libs/parser   -Wall -Werror -g -O2 -MT conf-conf.o -MD -MP -MF .deps/conf-conf.Tpo -c -o conf-conf.o `test -f 'conf.c' || echo './'`conf.c
mv -f .deps/conf-conf.Tpo .deps/conf-conf.Po
/bin/bash ../../libtool  --tag=CC   --mode=link gcc  -Wall -Werror -g -O2   -o conf conf-conf.o ../../libs/parser/libkconfig-parser.la   
libtool: link: gcc -Wall -Werror -g -O2 -o .libs/conf conf-conf.o  ../../libs/parser/.libs/libkconfig-parser.so
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends/conf'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
Making all in scripts
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/scripts'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/scripts'
Making all in utils
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/utils'
gcc -DHAVE_CONFIG_H -I. -I../scripts/.autostuff   -I../libs/parser   -Wall -Werror -g -O2 -MT gettext-gettext.o -MD -MP -MF .deps/gettext-gettext.Tpo -c -o gettext-gettext.o `test -f 'gettext.c' || echo './'`gettext.c
mv -f .deps/gettext-gettext.Tpo .deps/gettext-gettext.Po
/bin/bash ../libtool  --tag=CC   --mode=link gcc  -Wall -Werror -g -O2   -o gettext gettext-gettext.o ../libs/parser/libkconfig-parser.la  
libtool: link: gcc -Wall -Werror -g -O2 -o .libs/gettext gettext-gettext.o  ../libs/parser/.libs/libkconfig-parser.so
/bin/sed -e "s/@CONFIG_@/CONFIG_/g"    \
                      tweak.in >tweak
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/utils'
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends'
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ sudo make install
[sudo] password for mikes: 
Making install in docs
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/docs'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/docs'
make[2]: Nothing to be done for `install-exec-am'.
 /bin/mkdir -p '/usr/local/share/doc/kconfig-frontends'
 /usr/bin/install -c -m 644 kconfig-language.txt kconfig.txt '/usr/local/share/doc/kconfig-frontends'
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/docs'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/docs'
Making install in libs
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
Making install in parser
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make  install-am
make[3]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make[4]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libkconfig-parser.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libkconfig-parser-3.10.0.so /usr/local/lib/libkconfig-parser-3.10.0.so
libtool: install: (cd /usr/local/lib && { ln -s -f libkconfig-parser-3.10.0.so libkconfig-parser.so || { rm -f libkconfig-parser.so && ln -s libkconfig-parser-3.10.0.so libkconfig-parser.so; }; })
libtool: install: /usr/bin/install -c .libs/libkconfig-parser.lai /usr/local/lib/libkconfig-parser.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/include/kconfig'
 /usr/bin/install -c -m 644 list.h lkc.h expr.h lkc_proto.h '/usr/local/include/kconfig'
make[4]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make[3]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs/parser'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
make[3]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/libs'
Making install in frontends
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
Making install in conf
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends/conf'
make[3]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends/conf'
 /bin/mkdir -p '/usr/local/bin'
  /bin/bash ../../libtool   --mode=install /usr/bin/install -c conf '/usr/local/bin/./kconfig-conf'
libtool: install: /usr/bin/install -c .libs/conf /usr/local/bin/./kconfig-conf
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends/conf'
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends/conf'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
make[3]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/frontends'
Making install in scripts
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/scripts'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/scripts'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/scripts'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/scripts'
Making install in utils
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/utils'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/utils'
 /bin/mkdir -p '/usr/local/bin'
  /bin/bash ../libtool   --mode=install /usr/bin/install -c gettext '/usr/local/bin/./kconfig-gettext'
libtool: install: /usr/bin/install -c .libs/gettext /usr/local/bin/./kconfig-gettext
 /bin/mkdir -p '/usr/local/bin'
 /usr/bin/install -c tweak '/usr/local/bin/./kconfig-tweak'
 /bin/mkdir -p '/usr/local/bin'
 /usr/bin/install -c diff '/usr/local/bin/./kconfig-diff'
 /usr/bin/install -c merge '/usr/local/bin/./kconfig-merge'
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/utils'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends/utils'
make[1]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends'
make[2]: Entering directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends'
make[1]: Leaving directory `/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends'
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ pwd
/home/mikes/james-walmsley-kconfig-frontends/kconfig-frontends
mikes@ubuntu ~/james-walmsley-kconfig-frontends/kconfig-frontends $ cd ..
mikes@ubuntu ~/james-walmsley-kconfig-frontends $ ls
kconfig-frontends
mikes@ubuntu ~/james-walmsley-kconfig-frontends $ cd ..
mikes@ubuntu ~ $ cd bitthunder/
mikes@ubuntu ~/bitthunder $ ls
arch  bsp  doc  drivers  Kconfig  kernel  lib  LICENSE  Makefile  os  README.md  scripts
mikes@ubuntu ~/bitthunder $ make menuconfig
/bin/sh: 1: kconfig-mconf: not found
make: *** [menuconfig] Error 127

Make Issue about multiple derifition

I followed 'quick start' in bitthunder page.(bitthunder.org)
But I got errors like below.

some_directory/bitthunder/build/arch/arm/common/crtinit.o: In function `_start':
(.text+0x10): multiple definition of `_start'
/usr/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/crt0.o:(.text+0x0): first defined here
/usr/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/crt0.o: In function `_start':
(.text+0x104): undefined reference to `__bss_start__'
/usr/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/crt0.o: In function `_start':
(.text+0x108): undefined reference to `__bss_end__'
/usr/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x2c): undefined reference to `_exit'
/usr/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0x18): undefined reference to `_sbrk'
collect2: error: ld returned 1 exit status
make: *** [/home/keunwoo/Documents/warehouse404/bitthunder/vmthunder.elf] Error 1

I set the arm-none-eabi path correctly, but got conflict with code of bitthunder.
Am I doing something wrong?
Please help me out with this problem. Thanks

[USB] Add a USB sub-system to BitThunder

BitThunder requires a decent USB sub-system. Preferably with a driver model analogous to that of the linux kernel that will allow developers to use the linux kernel as a reference to implemented drivers for USB devices.

example of task

The blink of the led works, do you have examples of the task?
BT_CreateProcess() and more features

Unable to build Bitthunder

Unfortunately I was not successful with building bitthunder for Raspberry Pi. I got this Message:

/home/christoph/bitthunder/bsp/arm/raspberrypi/build/os/src/bt_main.o: In function `bt_main':
/home/christoph/bitthunder/bsp/arm/raspberrypi/../../../os/src/bt_main.c:125: undefined reference to `BT_Flush'
/home/christoph/bitthunder/bsp/arm/raspberrypi/build/os/src/lib/putc.o: In function `fputc':
/home/christoph/bitthunder/bsp/arm/raspberrypi/../../../os/src/lib/putc.c:53: undefined reference to `BT_Write'
/home/christoph/bitthunder/bsp/arm/raspberrypi/../../../os/src/lib/putc.c:55: undefined reference to `BT_Write'
collect2: error: ld returned 1 exit status
make[1]: *** [kernel.elf] Fehler 1
make: *** [all] Fehler 2

I think there might be a problem with the makefiles but due to my limmited knowledge in this issues I need some help at this point.

Thanks in advance!

Trouble building BitThunder

Hello, James,

Sorry to trouble you but our project is in need of an RTOS running on the Raspberry Pi.

BitThunder or BootThunder look like they will fit the bill. However, we have had some troubles just building the toolset. So, we were poised to post our situation and questions on a forum in hopes of some relief. Alas, the links (some of them) are rejected with a 404 error.

Is there a place to post simple, newbie questions about BitThunder or BootThunder?

Kind regards,
S.M.Allman

[KERNEL] Signals

Add signal support to processes, based FreeRTOS 8 event groups.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.