package genconfig

configuration conf {
	include embox.arch.system(core_freq=400000000)
	include embox.arch.arm.cortexm3.bundle
	include embox.arch.arm.armmlib.cpu_idle
	include embox.arch.arm.armmlib.exception_entry(irq_stack_size=1024)
	include embox.arch.arm.armmlib.ipl
	include embox.arch.arm.armmlib.lthread_own_stack(stack_size=1024)
	include embox.arch.arm.libarch
	include embox.arch.arm.vfork

	/* Enable FPU */
	include embox.arch.arm.fpu.cortex_m7_fp
	@Runlevel(0) include embox.arch.arm.fpu.fpv5(log_level="LOG_INFO")

	@Runlevel(0) include embox.arch.arm.cortexm3.armv7m_cpu_cache(
		log_level="LOG_DEBUG",
		sram_nocache_section_size=0x4000,
		nocache_region0_addr=0x60000000, nocache_region0_size=0x00100000
	)

	include platform.stm32.platform_init
	include platform.stm32.platform_shutdown
	include platform.stm32.h7.stm32h745i_discovery.bsp

	@Runlevel(0) include third_party.bsp.stmh7cube.sdram(fmc_swap=false)

	@Runlevel(0) include embox.kernel.stack(stack_size=8192,alignment=4)

	@Runlevel(1) include embox.driver.interrupt.cortexm_nvic
	@Runlevel(1) include embox.driver.clock.cortexm_systick
	include embox.kernel.time.jiffies(cs_name="cortexm_systick")

	@Runlevel(1) include embox.driver.serial.stm_usart_h7
	@Runlevel(1) include embox.driver.serial.stm_diag(baud_rate=115200, usartx=3)
	@Runlevel(1) include embox.driver.diag(impl="embox__driver__serial__stm_diag")
	//@Runlevel(1) include embox.driver.serial.stm_ttyS1(baud_rate=115200, usartx=6)
	@Runlevel(1) include embox.driver.serial.stm_ttyS0(baud_rate=115200, usartx=3)

	@Runlevel(1) include embox.driver.video.stm32h7_lcd(fb_base=0xD0000000, bpp=16)

	@Runlevel(2) include embox.driver.net.stm32h7cube_eth_745i_discovery
	@Runlevel(2) include embox.driver.net.loopback

	@Runlevel(2) include embox.driver.input.input_dev_devfs
	@Runlevel(2) include embox.driver.input.touchscreen.stm32h7cube_ts

	include embox.cmd.hw.input

	include embox.driver.video.fb

	include embox.kernel.task.multi
	include embox.kernel.task.resource.idesc_table(idesc_table_size=10)

	include embox.kernel.thread.thread_local_none
	include embox.kernel.thread.thread_cancel_disable
	include embox.kernel.thread.signal_stub
	include embox.kernel.timer.sleep_nosched

	include embox.kernel.sched.sched
	include embox.kernel.sched.idle_light
	include embox.kernel.thread.signal_stub

	include embox.kernel.thread.core(thread_pool_size=4, thread_stack_size=20480)

	/* tty requires */
	include embox.kernel.thread.mutex
	include embox.driver.tty.tty(rx_buff_sz=16, io_buff_sz=16)
	include embox.driver.tty.task_breaking_disable

	@Runlevel(2) include embox.cmd.shell
	include embox.init.setup_tty_diag
	@Runlevel(3) include embox.init.start_script(shell_name="diag_shell")

	include embox.cmd.fs.ls

	include embox.compat.posix.proc.vfork_exchanged
	include embox.compat.posix.proc.exec_exchanged

	include embox.cmd.help
	include embox.cmd.sys.version
	include embox.util.log
	include embox.kernel.critical
	include embox.kernel.irq_static
	include embox.mem.pool_adapter

	include embox.lib.libds
	include embox.framework.LibFramework
	include embox.compat.libc.stdio.print(support_floating=0)

	include embox.mem.heap_bm
	include embox.mem.static_heap(heap_size=0x4000)
	include embox.mem.fixed_heap(heap_start=0xD0200000, heap_size=0x800000)
	include embox.mem.bitmask(page_size=64)

	include embox.fs.driver.initfs_dvfs
	include embox.fs.driver.devfs_dvfs
	include embox.fs.rootfs_dvfs(fstype="initfs")

	include embox.fs.dvfs.core(inode_pool_size=6, dentry_pool_size=6, inode_pool_size=6)
	include embox.compat.posix.file_system_dvfs
	include embox.fs.syslib.perm_stub
	include embox.driver.block_dev

	include embox.net.skbuff(amount_skb=10)
	include embox.net.skbuff_data(amount_skb_data=10)
	include embox.net.sock_noxattr
	include embox.net.tcp
	include embox.net.tcp_sock
	include embox.net.udp
	include embox.net.udp_sock

	include embox.compat.posix.util.sleep

	include embox.compat.libc.math_openlibm

	include embox.compat.posix.sys.mman.mmap_stub
	include embox.kernel.task.idesc.idesc_mmap

	include third_party.lib.lvgl
	include third_party.lib.lvgl_display_port_stm32(log_level="LOG_DEBUG")
	include third_party.lib.lvgl_input_dev_port(log_level="LOG_DEBUG")
	include project.lvgl.cmd.lvgl_demo
}
